gpt4 book ai didi

c# - 使用 Reflection.Emit 动态创建针对特定 .NET 运行时的程序集

转载 作者:可可西里 更新时间:2023-11-01 08:47:22 24 4
gpt4 key购买 nike

我正在使用 Reflection.Emit 开发一个在运行时动态创建程序集的工具。

该工具针对 .NET 4.5 框架。

我想知道是否可以指定动态生成的程序集目标是哪个 .NET 运行时(例如:指定将创建一个 .NET 3.5 程序集)。

最佳答案

内置的反射发射在这里非常有限;你想要做的是告诉它使用特定的mscorlib程序集,但问题是很多反射发射涉及传递类型周围,​​这使得这非常困难。我发现解决这个问题的最务实的方法是切换到 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 中。

查看我的博文 Enter the IKVM - 或者查看 IKVM 上的示例,例如 Function Pointer Types .

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

关于c# - 使用 Reflection.Emit 动态创建针对特定 .NET 运行时的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20610740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com