2010-10-28 72 views
2

在我的AppDomain中有幾個動態程序集,當我嘗試 codeDom.CompileAssemblyFromSource 來編譯另一個新程序集時,我找不到一種方法將這些動態集合添加到ReferencedAssemblies中。如何將引用添加到動態程序集以編譯另一個動態程序集?

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

失敗,因爲動態程序集沒有位置。

在此先感謝。 PS:我實際上試圖在IronPython中使用ASP.Net MVC 3的新Razor模板引擎。

+0

最後可以在IronPython中使用剃刀和使用IronPython的對象作爲模板模型。 – Wuvist 2010-10-28 12:15:19

+0

但是,加載動態裝配問題依然存在。 我得到的模板編譯錯誤實際上與此問題無關。 – Wuvist 2010-10-28 12:16:58

回答

0

未測試,請嘗試使用assembly.FullName而不是assembly.Location

+1

THX,但全名是: 匿名運行DynamicMethods大會,版本= 0.0.0.0,文化=中立,公鑰=空 如此,失敗了。 – Wuvist 2010-10-28 08:07:59

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(" "); 
} 

BTW:有在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?