【问题标题】:How to deploy windows application to an older .NET Framework如何将 Windows 应用程序部署到较旧的 .NET Framework
【发布时间】:2020-01-05 11:23:40
【问题描述】:

我正在使用 C# 从 Visual Studio 2017 构建一个 Windows 应用程序。我有一个 Windows 10 系统,我的 .NET Framework 默认为 4.7。但我想在 Windows 7 并使用 4.5 .NET Framework 的系统中运行此应用程序。

因此,在构建此应用程序时,我已将其目标框架更改为 4.5,我还从 app.config 文件更改了其支持的运行时。

下面是我的 app.config 文件:

  <?xml version="1.0" encoding="utf-8"?>
        <configuration>  
    <configSections>
    </configSections>
        <startup>
          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>      
        </startup>    
        </configuration>

现在,当我尝试在 Windows 7 中运行此应用程序时,我收到错误消息“此设置需要 .NET Framework 版本 v4.6.1。请安装 .NET Framework 并再次运行此设置。.NET Framework 可以从网络上获取。您现在要执行此操作吗? 然后当我点击“是”按钮时。我收到错误“组件 Microsoft .NET Framework 4.6.1(x86 和 x64)安装失败并出现以下错误消息”“尝试安装 Microsoft .NET Framework 4.6.1 时发生故障”

【问题讨论】:

  • 您使用的其中一个 NuGet 包是否可能需要 4.6.1?
  • 我如何找到它?
  • 您似乎正在运行一个您没有另外提及的安装程序。安装程序可能配置为需要 .NET 4.6.1。

标签: c# asp.net .net-framework-version


【解决方案1】:

这里至少发生了两件事。

安装要求

似乎目标 (Windows 7) 机器可能没有安装 4.5 或更高版本的 .NET Framework。如果这是真的,安装程序将尝试安装 v4.6.1,因为这是 4.0、4.5、4.5.1 和 4.5.2 版本的就地升级。 (如here 所述)。

或者,您的应用程序使用的一个或多个库或其他组件需要版本 4.6.1,即使您的核心应用程序代码不需要。

安装问题

安装问题可能是一个单独的问题。您是否检查了错误消息中提到的设置日志以查看更多详细信息?

【讨论】:

  • 好的,我会通过它。谢谢。
  • 我的目标机器看起来不错,它安装了 4.5 版本。我也尝试将它安装在其他机器是 windows 10 中,它在其中完美运行。
  • 我检查了安装日志文件,发现:已设置以下属性: 属性:[AdminUser] = true {boolean} 属性:[InstallMode] = HomeSite {string} 属性:[NTProductType ] = 1 {int} 属性:[ProcessorArchitecture] = AMD64 {string} 属性:[VersionNT] = 6.1.0 {version} 运行检查包'Microsoft .NET Framework 4.6.1 (x86 and x64)',阶段BuildList Reading注册表项“HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full”的值“Release”读取整数值 378389 属性“DotNet461Full_Release”的设置值“378389 {int}”
  • 读取注册表项“HKLM\SOFTWARE\Microsoft\NET Framework Setup\OS Integration”的值“v4”无法读取注册表值未设置属性“DotNet461Full_OSIntegrated”的值以下属性已设置为包“Microsoft .NET Framework 4.6.1(x86 和 x64)”:属性:[DotNet461Full_Release] = 378389 {int} 运行检查命令“DotNetFX461\NDP461-KB3102436-x86-x64-AllOS-ENU.exe” 运行结果属性“InstallMode”和值“HomeSite”上的运算符“ValueEqualTo”:true 检查命令“DotNetFX461\NDP461-KB3102436-x86-x64-AllOS-......等”的结果
【解决方案2】:

我已修复它,如果有人可能有同样的问题,我会发布它。我的客户端机器的问题是,它是窗口 7,但没有安装任何服务包。在哪里安装 .NET Frame work V4.6.1 您的系统必须是带有 SP1 的 windows 7。我只是将 SP1 安装到客户端计算机窗口 7 并解决了问题,并且我能够安装 .NET Framework v4.6.1,因此我的软件正在运行。 Here is the link。但是我还没有弄清楚在从 VS 2017 构建它时如何使我的 Windows 应用程序以所需的 .NET Framework 为目标。

【讨论】:

    【解决方案3】:

    您必须使用 .NET 4.6.1 检查是否有任何 NuGet 包。 如果是这种情况,您也必须降级它们。

    【讨论】:

    • 我该怎么做?
    【解决方案4】:

    查看参考资料,可能某些库是 .NET Framework v4.6.1 版

    【讨论】:

      【解决方案5】:

      如何构建应用程序的安装程序?也许您有一些检查已安装的 .NET Framework 版本的条件。

      【讨论】:

        【解决方案6】:

        您必须在您的机器上安装 .NET Framework v4.6.1 版。 从以下链接中找到安装程序: https://www.microsoft.com/en-us/download/details.aspx?id=49982

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-13
          • 1970-01-01
          相关资源
          最近更新 更多