2013-03-25 113 views
3

比方说,我希望我的.NET 2.0的exe来无论是在运行:在任何框架运行.NET 2.0的应用程序

  • XP安装
  • XP仅安装了.NET 4.0只.NET 2.0(或Windows 8中不已NET 2.0启用)

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

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

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

回答

0

一个.NET .exe称为assembly .Additionally于程序的数据它包含了你的程序的元信息,所以CLR可以使用它,所以你可以像reflection执行的东西。
您可以在大会中提供信息,但恐怕你无法轻松做到你想做的事。您需要对.NET的安装版本进行.exe检查,并对其作出反应。另外,你不要忘记,当你创建一个程序集时,你需要指定一个目标框架,即.NET 3.5,.NET 4.0等......所以.NET 2.0的程序集将运行在.NET 4.0上无论如何由于向下兼容性。

请参阅here对于assemblies以及它们如何使用以及here对于System.Reflection.Assembly-类。

0

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

但是,您通常不必。假设您可以将您的项目(包括您需要参考的所有第三方项目)设置为全部到足够低的目标框架,它们也将在任何更高级的框架中执行。最好在构建时使用的那个相同。

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

相关问题