2011-12-19 1 views
1

У меня есть приложение MonoTouch, которое управляет списком сборок. Я хочу, чтобы разработчики могли как можно проще модифицировать этот список сборок. Я надеялся, что я мог бы просто иметь их добавить сборку ссылок на приложения, и что я мог тогда цикл через них, как это:Есть ли способ заставить MonoDevelop построить/загрузить сборку?

foreach (AssemblyName assemblyName in this.GetType().GetReferencedAssemblies()) 
{ 
    Assembly assembly = Assembly.Load(assemblyName); 
    //Do something with assembly 
} 

Проблема, которую я имею, что все узлы я явно не ссылки не найдены в массиве, возвращаемом GetReferencedAssemblies(), и приложение компилируется с предупреждением Library 'Unreferenced.dll' missing in app bundle, cannot extract content.

Есть ли способ заставить MonoDevelop или MonoTouch (не уверенный, что здесь несет ответственность) создавать и загружать все сборки в папке «Ссылки» без явной ссылки на какой-либо тип в этих сборках?

+0

Аналогичный вопрос:

ответ

1

Он начинается с компилятора Функция. Чтобы получить в, список GetReferencedAssemblies должен содержать ссылку на сборку. Это может быть напрямую (например, явный тип ссылается) или косвенно (например, ссылки ссылки). Если компилятор не видит ссылки на сборку, то он не будет частью метаданных AssemblyRef.

После этого недостаток ссылок означает управляемый компоновщик (первый, необязательный), а затем компилятор AOT (второй, обязательный для устройств) не будет обрабатывать и компилировать сборки.

Простым способом является обеспечение ссылки на тип в каждой сборке в вашем приложении. Это одна строка кода по сборке, но ее тоже легко забыть.

Вы можете автоматизировать это, добавив шаг предварительной сборки (в MonoDevelop), который будет читать сборки (например, в каталоге) и сгенерирован файл C# (например, частичный класс), который вы укажете в своем приложении. Таким образом, людям не придется забывать добавлять новые сборки в свою сборку.

+1

Спасибо. Я надеялся, что может быть компилятор, но это будет нормально работать. Я особенно ценю подсказку об автогенерации класса, который сделает это; Я сделал именно это, и он отлично работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^