我有一个WinForms应用程序应该非常容易使用just和.exe文件进行部署。它使用框架2.0,因此默认情况下它不适用于Windows 8。如果我包含带有以下参数的.config文件,它在W8上工作正常:
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
但是,现在我必须部署两个文件,这是不可接受的。我可以做些什么来将这些参数“嵌入”exe本身吗?
我尝试过使用WinZip自动提取器,但它也不是一个选项,因为我无法自定义其界面。
答案 0 :(得分:13)
.NET可执行文件包含一小段本机代码,用于将适当的CLR版本加载到进程中。
Loader调用 shim (MSCOREE.DLL,.NET可执行文件具有此DLL的本机依赖性)以加载CLR(v4中的CLRCreateInstance)。
垫片处理<startup>
配置元素的内容。
这意味着,您无法在托管代码中处理<startup>
元素,因为此时没有CLR(以及任何托管代码)。唯一的方法是编写自己的CLR主机。我认为,使用配置文件发布应用程序或构建.NET 4 / 4.5版本要容易得多。
答案 1 :(得分:0)
我会自己发一个答案。 Windows中包含的IExpress似乎是解决问题的好方法。