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

标签 c# .net winforms configuration windows-8

我有一个 WinForms 应用程序,只需 .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>

但是,现在我必须部署两个文件,这是 Not Acceptable 。我可以做些什么来将这些参数“嵌入”到 exe 本身中吗?

我尝试过使用 WinZip 自解压器,但它也不是一个选项,因为我无法自定义它的界面。

最佳答案

.NET 可执行文件包含一小段 native 代码,旨在将适当的 CLR 版本加载到进程中。

加载程序调用 shim(MSCOREE.DLL,.NET 可执行文件具有来自此 DLL 的 native 依赖项)以加载 CLR(v4 中的 CLRCreateInstance)。
<startup> 的内容配置元素由垫片处理。

这意味着,您无法处理 <startup>托管代码中的元素,因为此时没有 CLR(和任何托管代码)。唯一的方法是编写自己的 CLR 主机。我认为,使用配置文件发布应用程序或构建 .NET 4/4.5 版本要容易得多。

关于c# - 我可以在没有 .net 中的 .config 文件的情况下指定 supportedRuntime(或任何其他配置参数)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315155/

相关文章:

.net - Visual Studio 2010 中的 ASP.NET Web API 帮助页面

.net - 使参数化查询同时适用于 SQL Server 和 Oracle

.net - 如何在devexpress中通过代码触发按钮?

c# - EntityFramework 引用回调用方 - 找到的程序集的 list 定义与程序集引用不匹配

c# - 在 DataGridView 列中格式化 TimeSpan

.net - 我可以提高此 CSV 导入查询性能吗?

c# - 如何打开具有只读保护的Excel文件?

c# - 如何将创建的数据库项目created dacpac包含到cs项目中

c# - System.Type 到 XmlSchema 内置类型

c# - 如何禁止在 DataGridView 中创建新行?