在 Windows 10 上运行 dot net 3.5 应用程序

Posted

技术标签:

【中文标题】在 Windows 10 上运行 dot net 3.5 应用程序【英文标题】:Run dot net 3.5 application on Windows 10 【发布时间】:2016-03-14 12:39:37 【问题描述】:

我创建了一个 WPF 应用程序,它应该在 Windows 7、8、8.1、10 上本机运行。

在 Visual Studio 中,我已将 .NET Framework 设置为 3.5,因为它与 Windows 7 捆绑在一起。但是,当我在 Win10 上运行它时,它会提示安装 .NET 3.5,因为 Win10 与 4.6 捆绑在一起并且没有 3.5默认安装。

如何让我的应用程序在所有 Windows 版本 >= 7 上运行而不从 Windows 获得任何提示并且不安装任何东西?

【问题讨论】:

我希望所有 Windows 7 机器现在都安装了 .NET 4.0 或更高版本。 您很可能需要将它包含在您的安装程序中。根据他们的定义,如果没有它的要求,你就无法运行你的应用程序......(还有@ChrisF,我希望在我的上一个项目中就是这种情况,我们的很多用户都在使用不可靠的 Windows 副本并且不想安装 Windows 更新以避免检测).. @Sayse - 啊。我没有考虑过:( @ChrisF 我也期望相同,但我需要确定.. :) @Danton - 您可能需要考虑使用 3.5 编写启动器,尽管根据我在之前评论中的经验,我们最终只是告诉我们的客户找到一种升级方法,因为这将使他们受益更多我认为不仅仅是我们的软件。我认为显示这些弹出窗口作为最终用户是可以接受的,前提是它们显示了解决方案 【参考方案1】:

我不认为你可以。即使 Windows 10 中有 .net。Microsoft 中的更新系统是这样的,它不会覆盖您当前的小程序(例如 Chrome),而是向系统添加更多内容(检查您的控制面板/卸载程序以了解如何您拥有许多 Microsoft C++/.NET 实例)

【讨论】:

【参考方案2】:

您可以创建一个安装程序,将您的应用程序 + .NET 4.5 静默安装到客户的计算机上。这样您的应用就可以在每个操作系统上无缝运行。

【讨论】:

它要么增加安装程序的大小,要么需要互联网连接 + 安装时间过长,太安静不会让用户满意.. .NET 4.5 框架远没有 .NET 3.5 庞大。 IMO 将额外的 67MB 添加到您的安装程序不会造成太大伤害。让我纠正一下静默安装。我的意思是在安装程序中,您可以检测 .NET 4.5 安装并根据需要进行安装。将会有 .NET 4.5 安装 UI 可见。所以也不算太沉默。顺便说一句,在 4.5 机器上开发并在 3.5 机器上部署时,我的经验很糟糕。一些错误只出现在部署的机器上。【参考方案3】:

它可以工作,找到解决方案:

我们需要修改 app.config 文件并在其中添加以下行:

<startup>
 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
 <supportedRuntime version="v4.0"/>
 <supportedRuntime version="v2.0.50727"/>
</startup>

它从上到下决定,根据上面的列表找到的 .net 的第一个版本,它适用于该列表。

CATCH: 编译完成后,在release文件夹下生成了一个ProgramName.exe.config文件,我们需要将它和我们的ProgramName.exe一起复制到我们要运行的系统..

【讨论】:

只是好奇为什么当您的要求是运行在 .NET 3.5 及更高版本(即 Windows 7 及更高版本)上运行并且您正在构建时,您为什么要告诉运行时回退到 2.0 3.5? @aardila 答案很清楚。它使用 .NET 2.0 作为运行时,因为 .NET 3.5 使用 .NET 2.0 作为其运行时。没有特定于 .NET 3.5 的运行时。 @EriawanKusumawardhono 感谢您对 3.5 运行时的澄清。也就是说,我并没有挑战答案的清晰度,并且由于它不包含您刚刚提供的信息,因此有待澄清的空间,因此我提出了问题 @ardila 更准确地说,.NET 3.5 使用 CLR 2.0 而不是 .NET 2.0。 Wikipedia有很好的对应关系。

以上是关于在 Windows 10 上运行 dot net 3.5 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

分析在 docker 容器上运行的 C# dot net 应用程序

带有 Javascript 的 Dot Net Core Web API - CORS 策略错误

无法让 pydot 在 Windows 10 上找到 graphviz

在路径中找不到“dot.exe”。 Python 上的 Pydot (Windows 7)

如何在 Windows 上更新正在运行的 asp.net 核心应用程序?

从 linux 的 dot net core 连接到远程 sql server 有时会失败,然后开始随机工作