我有一个 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/