C# 如何将windows应用程序部署到较旧的.NET Framework

C# 如何将windows应用程序部署到较旧的.NET Framework,c#,asp.net,.net-framework-version,C#,Asp.net,.net Framework Version,我正在使用C#从Visual studio 2017构建windows应用程序。我有一个windows 10系统,默认情况下我的.NET Framework是4.7。但是我想在Windows7系统中运行这个应用程序,并且使用4.5.NETFramework 因此,在构建此应用程序时,我将其目标框架更改为4.5,并将其支持的运行时从app.config文件更改为 下面是我的app.config文件: <?xml version="1.0" encoding="utf-8"?>

我正在使用C#从Visual studio 2017构建windows应用程序。我有一个windows 10系统,默认情况下我的.NET Framework是4.7。但是我想在Windows7系统中运行这个应用程序,并且使用4.5.NETFramework

因此,在构建此应用程序时,我将其目标框架更改为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并再次运行此安装程序。可以从web上获取.NET Framework。是否立即执行此操作?”?。 然后,当我点击“是”按钮时,我得到一个错误“组件Microsoft.NET Framework 4.6.1(x86和x64)未能安装,并显示以下错误消息”“尝试安装Microsoft.NET Framework 4.6.1时发生故障”


您必须使用.NET 4.6.1检查是否有任何NuGet软件包。
如果是这种情况,您还必须将其降级。

您必须使用.NET 4.6.1检查是否存在任何NuGet软件包。
如果是这种情况,您也必须将其降级。

这里至少发生了两件事

安装要求

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

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

安装问题


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

这里至少发生了两件事情

安装要求

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

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

安装问题


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

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

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

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

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

您必须在计算机上安装.NET Framework v4.6.1版。 从以下链接查找安装程序:
您必须在计算机上安装.NET Framework v4.6.1版。 从以下链接查找安装程序:

我修复了它,我正在发布它,以防有人可能有相同的问题。我的客户机问题是,它是Windows 7,但没有安装任何service pack。在其他地方安装.NET Frame work V4.6.1您的系统必须是带有SP1的Windows 7。我只需将SP1安装到客户机Windows 7,问题就解决了,我将s能够安装.NET Framework v4.6.1,因此我的软件正在运行..但我还没有弄清楚如何使我的windows应用程序在从VS 2017构建它时以所需的.NET Framework为目标。

我修复了它,我正在发布它,以防有人可能有相同的问题。我的客户机问题是,它是windows 7,但没有任何se已安装Service pack。在其他地方安装.NET Framework V4.6.1您的系统必须是带有SP1的windows 7。我只是将SP1安装到客户端计算机windows 7,问题得到解决,并且我能够安装.NET Framework V4.6.1,因此我的软件正在运行。但我还没有弄清楚如何使我的windows应用程序成为所需的目标。NET Framework从VS 2017构建时。

您使用的某个NuGet软件包是否可能需要4.6.1?我如何发现?您似乎正在运行一个您没有提到的安装程序。安装程序可能配置为需要.NET 4.6.1。您使用的某个NuGet软件包是否可能需要4.6.1?如何我找到了吗?你似乎正在运行一个你没有提到的安装程序。该安装程序可能配置为需要.NET 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和x64),阶段构建列表读取注册表项“HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full”的值“Release”读取整数值378389设置值“378389{int}'对于注册表项'HKLM\SOFTWARE\Microsoft\NET Framework Setup\OS Integration'的属性'DotNet461Full_Release'读取值'v4'无法读取注册表值未设置属性'DotNet461Full_OSIntegrated'的值,已为Package设置以下属性