3

假设我希望我的 NET 2.0 exe 同时运行:

  • 仅安装了 NET 2.0 的 XP
  • 仅安装了 NET 4.0 的 XP(或未启用 NET 2.0 的 Windows 8)

一种解决方案是创建一个 MyProgram.exe.config 文件,我写这个实体

<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>

是否可以在 exe 中嵌入这些条目(或 MyProgram.exe.config)?谢谢你。

4

2 回答 2

0

A.NET .exe被称为assembly. 除了程序数据之外,它还包含有关您的程序的元信息,因此CLR可以使用它,因此您可以执行诸如reflection.
你可以在程序集中提供信息,但恐怕你不能那么容易地做你想做的事。您需要.exe检查已安装的版本.NET并最终对其做出反应。

此外,您一定不要忘记,在创建程序集时,您指定.NET-targetframework,即 .NET 3.5、.NET 4.0 等。因此,.NET 2.0 的程序集无论如何都将在 .NET 4.0 上运行,因为向下 -兼容性。

请参阅此处了解assemblies它们的使用方式和使用方式,以及查看-classSystem.Reflection.Assembly

于 2013-03-25T11:07:24.110 回答
0

使用哪个运行时的决定是在您自己的代码加载之前完成的。这意味着您无法将supportedRuntime元素有意义地嵌入到您自己的代码中。

但是,您通常不必这样做。假设您可以将所有项目(包括您需要引用的所有第三方项目)设置为足够低的目标框架,它们也将在任何更高的框架上执行。最好与您在构建时使用的相同。

如果您使用混合模式程序集 (C++/CLI),可能会出现一些潜在问题之一。请参阅这篇文章,了解如何在不需要.exe.config文件的情况下处理它,假设您的可执行文件不是混合模式程序集,但它使用的一些 DLL 是。

于 2013-03-25T11:29:06.433 回答