【发布时间】:2020-08-18 14:28:27
【问题描述】:
我有一个具有以下要求的 WPF 应用程序:
- 必须在 Windows 7 到 Windows 10 中工作,而无需在系统中安装任何其他东西
- 即必须在 .NET 3.5 和 .NET 4 框架系统上工作
- 它必须是单个可执行文件,不存在其他配置文件或 DLL
我主要是通过构建我的应用程序同时面向 .NET 3.5 和 Costura.Fody 来完成这项工作。然后,我可以通过在 App.Config 中使用以下内容使其在未安装 .NET 3.5 的机器上运行:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
问题是,这仅在 app.exe.config 位于违反要求 #3 的 exe 旁边时才有效。
对此我有什么选择?我考虑过可能创建一个嵌入了 EXE 和 Config 的 C++ 应用程序,并在启动时将 2 个文件复制到临时文件夹(如果还没有的话)并从那里执行它,但我不确定是否有更好的方法。
【问题讨论】:
-
创建一个额外的 C++ 应用程序而不是简单地部署一个额外的配置文件?你是认真的吗?
-
这是给我的要求
-
好吧,那么我猜你必须将 .exe 和 .config 文件嵌入到一些 .exe 中,然后在启动时解压它们。运行应用的 .NET Framework 版本由 this 顺序确定,其中包括
App.config。 -
谢谢 - 所以我的假设是正确的。如果不创建另一个 EXE,例如在 .NET 框架之外的所有窗口上运行的 c++,没有其他方法可以完成所需的工作
-
您是否考虑过迁移到 .NET Core 并发送 single-file executable?
标签: c# .net wpf visual-studio