Как добавить ссылку на динамическую сборку для компиляции другой динамической сборки? - PullRequest
2 голосов
/ 28 октября 2010

В моем AppDomain есть несколько динамических сборок, когда я пытаюсь codeDom.CompileAssemblyFromSource для компиляции другой новой сборки, я не могу найти способ добавить эти динамические сборки в ReferencedAssemblies.

foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
         compilerParameters.ReferencedAssemblies.Add(assembly.Location);
}

Failed, поскольку динамическая сборка не имеет Location.

Заранее спасибо.

PS: На самом деле я пытаюсь использовать новый движок шаблонов Razor ASP.Net MVC 3 в IronPython.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2011

У меня была похожая проблема, и это сообщение в блоге: http://geekswithblogs.net/gyoung/archive/2006/04/27/76533.aspx убедило меня, что нет способа сделать это.Однако это довольно старый пост, и если в .net 4 есть что-то новое, что позволяет это, было бы здорово узнать об этом.

РЕДАКТИРОВАТЬ:

Я могу подтвердить, что это невозможно, ис .net 4. Так как класс CSharpCodeGenerator использует csc.exe для компиляции вашего кода, он использует следующий код для добавления ссылочных сборок в качестве параметров компилятору:

foreach (string current in options.ReferencedAssemblies)
{
    stringBuilder.Append("/R:");
    stringBuilder.Append("\"");
    stringBuilder.Append(current);
    stringBuilder.Append("\"");
    stringBuilder.Append(" ");
}

Кстати: в SO есть еще сообщениядля той же проблемы:

Поставить сборку в CompilerParameters ReferencedAssemblies из памяти, а не с диска?

В C # как вы ссылаетесь на типы из одного в памятисборка внутри другого?

0 голосов
/ 28 октября 2010

Не тестируйте, попробуйте использовать assembly.FullName вместо assembly.Location.

...