2

在我的 AppDomain 中几乎没有动态程序集,当我尝试使用 codeDom.CompileAssemblyFromSource 编译另一个新程序集时,我无法找到将这些动态程序集添加到 ReferencedAssemblies 的方法。

foreach(AppDomain.CurrentDomain.GetAssemblies() 中的 var 程序集)
{
         compilerParameters.ReferencedAssemblies.Add(assembly.Location);
}

失败,因为动态程序集没有位置。

提前致谢。

PS:我实际上是在尝试在 IronPython 中使用 ASP.Net MVC 3 的新 Razor 模板引擎。

4

2 回答 2

0

我遇到了类似的问题,这篇博文: 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# 中,如何从一个内存程序集中引用另一个内存程序集中的类型?

于 2011-12-23T20:27:40.903 回答
0

不测试,尝试使用assembly.FullName而不是assembly.Location.

于 2010-10-28T08:03:00.670 回答