我可以在.net中没有.config文件的情况下指定supportedRuntime(或任何其他配置参数)吗?

时间:2012-09-07 09:14:17

标签: c# .net winforms configuration windows-8

我有一个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自动提取器,但它也不是一个选项,因为我无法自定义其界面。

2 个答案:

答案 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似乎是解决问题的好方法。