簡體   English   中英

使用Reflection.Emit動態創建面向特定.NET運行時的程序集

[英]Dynamically creating an assembly targeting a specific .NET runtime using Reflection.Emit

我正在使用Reflection.Emit開發一個在運行時動態創建Assembly的工具。

該工具針對.NET 4.5框架。

我想知道是否可以指定動態生成的程序集所針對的.NET運行時(例如:指定將創建.NET 3.5程序集)。

內置的反射發射在這里非常有限; 想要做的是告訴它使用一個特定的mscorlib程序集,但問題是很多反射 - 發射涉及傳遞Type s,這使得這非常難。 我發現解決這個問題的最實用的方法是切換到IKVM.Reflection.dll - IKVM.NET的一部分。 這個dll 非常有意地使用與Reflection.Emit相同的基本API,但它不是針對內置的Type對象進行操作,而是針對IKVM實例進行操作,這些實例是在Universe概念中加載的。 然后, Universe可以加載所需的mscorlib dll,以及您需要的任何其他dll。

對此的更改通常只是更改using語句。 這種方法在整個protobuf-net(特別是預編譯工具)中使用,不僅允許不同的版本,而且可以定位整個不同的框架 想要從常規.NET應用程序創建一個針對silverlight的DLL嗎? 不是問題。 最棘手的一點(IMO)變得簡單地找到正確的mscorlib和支持文件加載到Universe

請參閱我的博客文章輸入IKVM - 或查看IKVM上的示例,如功能指針類型

我可以根據需要提供更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM