Проблема с загрузкой сборок в проекте MonoTouch - PullRequest
2 голосов
/ 09 июня 2011

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

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

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

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

Ответы [ 2 ]

1 голос
/ 19 августа 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, поскольку такое поведение сделает невозможным доступ к спутниковым библиотекам во время выполнения.

1 голос
/ 22 июня 2011

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

...