在我的AppDomain中,当我尝试时,几乎没有动态组装 codeDom.CompileAssemblyFromSource 编译另一个新程序集时,我无法找到将这些动态汇编添加到ReferencedAssemblies的方法。
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { compilerParameters.ReferencedAssemblies.Add(assembly.Location); }
失败,因为动态程序集没有Location。
提前致谢。
PS:我实际上是想在IronPython中使用ASP.Net MVC 3的新Razor模板引擎。答案 0 :(得分:0)
不测试,请尝试使用assembly.FullName
代替assembly.Location
。
答案 1 :(得分: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中有另外一个帖子来解决同样的问题:
Supply Assembly to CompilerParameters ReferencedAssemblies from memory and not disk?
In C#, how do you reference types from one in-memory assembly inside another?