我已经将目前针对VS2010中的.NET 4.0的解决方案迁移到VS2012,现在我想将其重新定位到.Net 4.5
我不确定的是NuGet包.例如,我在VS2010中从EF4更新的EF5实际上是EF 4.4,如下所示:
<Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
我还可以在packages.config中看到以下项目:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
将目前设置为.NET 4.0的所有NuGet包重新定位到目标.NET 4.5的最佳做法是什么?
我只是将Visual Studio 2017解决方案中所有11个项目的目标框架从.NET 4.7更改为.NET 4.7.1。但是现在,每次我尝试构建时,我都会从NuGet中收到以下错误
1>------ Build started: Project: GS.Core, Configuration: Debug x64 ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(186,5): error : Your project does not reference ".NETFramework,Version=v4.7.1" framework. Add a reference to ".NETFramework,Version=v4.7.1" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.
StopOnFirstBuildError: Build cancelled because project "GS.Core" failed to build.
Build has been canceled.
Run Code Online (Sandbox Code Playgroud)
如果查看.csproj文件,则可以看到目标框架已更改。
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
Run Code Online (Sandbox Code Playgroud)
而且我没有看到“ TargetFrameworks”部分,只有“ TargetFrameworkVersion”
只是为了笑,我尝试实际上添加一个带有该名称的键,与指定的错误消息完全相同。
<TargetFrameworks>.NETFramework,Version=v4.7.1</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
那是个坏主意。当我尝试加载Visual Studio时,它爆炸了。
如果重要的话,我的默认软件包管理格式为“ PackageReference”。
我尝试了此问题中列出的修复程序,但没有效果。
有没有办法解决这个问题?如有必要,我很乐意手动编辑项目文件。我非常想转到4.7.1