如何添加对动态程序集的引用以编译另一个动态程序集?

时间:2010-10-28 07:51:12

标签: c# asp.net-mvc clr ironpython razor

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

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

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

提前致谢。

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

2 个答案:

答案 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?