Проблема с загрузкой сборок в проекте MonoTouch

Я создаю Monotouch (пробная версия) 4.0.3. проект. Компилируется с предупреждением:

Предупреждение: в комплекте приложения отсутствует библиотека loader.dll, из которой невозможно извлечь содержимое.

Все остальные dll успешно объединяются во время сборки, и эта работала раньше. После компиляции с предупреждением происходит сбой при загрузке во время выполнения (в симуляторе) с ошибкой сегментации, когда не удается загрузить сборку.

Я искал это предупреждение и не смог найти никаких ссылок на него. Кто-нибудь знает, почему сборка не добавляется в пакет приложения?


person TFerch    schedule 09.06.2011    source источник
comment
У меня точно такая же проблема, вот бы кто подсказал что делать.   -  person Jean-Philippe Leclerc    schedule 10.06.2011
comment
Используйте MonoTouch 3.2.6, это мое предложение. Версии 4.0.x сломаны. Однако я не знаю, возможно ли получить эту версию в качестве пробной версии.   -  person jonathanpeppers    schedule 11.06.2011
comment
Вернуть пробные версии не представляется возможным, но спасибо за предложение. Теперь я попытался воссоздать все решение и скопировать исходные файлы, но проблема все еще возникает.   -  person TFerch    schedule 13.06.2011


Ответы (2)


Похоже, что компоновщик удаляет loader.dll, потому что думает, что его никто не использует. Попробуйте установить для компоновщика проекта значение «связать только sdk».

person Mikayla Hutchinson    schedule 21.06.2011

mhutch прав, компоновщик умышленно удаляет библиотеку. Однако параметр компоновщика по умолчанию не должен ничего связывать, поэтому его решение будет работать только в редком случае, когда вы связываете все сборки (чего вы не хотите делать с MonoTouch, потому что ссылки на SDK никогда не должны быть встроены) .

Обходной путь состоит в том, чтобы просто создать новый экземпляр чего-то в библиотеке, которую вы хотите использовать, изнутри вызывающей сборки.

using MonoTouch.Foundation;
using MonoTouch.UIKit;
using MyLibrary;

namespace MyApp
{
    public class Application
    {
        static void Main(string [] args)
        {
            new MyLibrary.DontPruneMeBro();

            UIApplication.Main(args, null, "AppDelegate");
        }
    }
}

Кроме того, я не знаю, что делают разработчики iOS, поскольку такое поведение сделало бы невозможным доступ к вспомогательным библиотекам во время выполнения.

person Daniel Crenna    schedule 19.08.2011