因项目需要,需将.net Framework4.6WPF升级到.netcore3.1/net5.0/6.0/7.0版本,通过很多办法解决,开始搞得一头雾水。终于,找到了办法。

1、首先下载upgrade-assistant工具(.net升级助手)。

2、在VS2022内进入项目中,编辑项目文件,如果该项目同时有winform,则需要加上这一句:

<UseWindowsForms>True</UseWindowsForms>

这样yourWPF.csproj有类似这样的片段:

<PropertyGroup>
    <TargetFrameworks>net6.0-windows</TargetFrameworks>
    <OutputType>WinExe</OutputType>
    <UseWPF>true</UseWPF>
    <UseWindowsForms>True</UseWindowsForms>

  </PropertyGroup>

3、下面在VS中进入开发者命令行 ,弹出黑窗中输入:

upgrade-assistant upgrade yourWPF.csproj

回车,期间会有很多提示符,并让你回车或做出选择,一般情况下一律回车即可。

最后会有类似“Upgrade step Finalize upgrade applied successfully”,“Upgrade has completed.”之类的提示。说明升级成功。

4、再次回到yourWPF.csproj文件中,我们可以看到出现类似:

  <ItemGroup>
    <PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.355802">
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Windows.Compatibility" Version="7.0.0" />
  </ItemGroup>

这样的片段。

5、 为了具有更广泛的适应性,我们将其中的:

<TargetFrameworks>net6.0-windows</TargetFrameworks>

改成:

<TargetFrameworks>netcoreapp3.1;net5.0;net6.0;net7.0;net7.0-windows</TargetFrameworks>

6、OK,完美解决。