如何解决 .net 核心构建错误 NETDSDK1061 和警告 MSB3277
How to resolve .net core build error NETDSDK1061 and warning MSB3277
我遇到了问题,我的 AspNetCore.App-metapackage 引用的 EntityFrameworkCore (2.1.2) 版本低于 EfCore 提供程序包(NpgSql,引用 2.1.3)。结果是警告 MSB3277 ()。快速修复是公认的答案。
另一个回答指出,我使用的 Microsoft.AspNetCore.App 软件包(当时为 2.1.1)低于上一个稳定版本 (2.1.4)。无法更改包版本(见下图)。
我在 class 库项目
中遇到了与 Microsoft.NETCore.App 相同的问题
我什至没有注意到我使用了比可用版本更旧的元包。直到今天,我总是检查 NuGet 包管理器中是否有可用的更新。我使用默认项目模板并始终安装最新的 .NetCore SDK,相信这就足够了。不是。
调查此问题后,我发现我可以强制我的项目使用特定的 .NETCore.App 或 AspNetCore.App 元包与包管理器控制台(Install-Package Microsoft.NETCore.App -Version 2.1.4
或Install-Package Microsoft.AspNetCore.App -Version 2.1.4
).
在该命令之后我遇到了构建错误 (NETSDK1061: The project was restored using Microsoft.NETCore.App version 2.1.4, but with current settings, version 2.1.0 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish.
)。
我试图找到有关该问题的任何帮助,发现一些 GitHub 问题(例如 this one)看起来很相似,但实际上是不同的。
我找到了 descriptive doc,但这并没有真正帮助我。
我从 Rick Strahl 那里找到了一篇 pretty helpful blog post,解释了哪些包可用以及每个包的用途是什么。这是一个很好的开始。
这是我的解决方案:
第一步:
在程序包管理器控制台中执行 Install-Package Microsoft.AspNetCore.App -Version [VersionOfYourChoice]
and/or Install-Package Microsoft.NETCore.App -Version [VersionOfYourChoice]
。
第 2 步:
如下所示编辑 .csproj:
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.4</RuntimeFrameworkVersion> <- add this line
<!--<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> --> <- alternative
</PropertyGroup>
还有一点要点:如果您使用 Win10,请帮自己一个忙,检查已安装的 .NET Core SDK/Runtimes 等。卸载每个 SDK/Runtimes 您不需要的(再次:查看 Rick 的博客 post)。
您只需要您当前在一个项目中定位的对象。
例如:如果您正在处理一个 .NET Core 项目,并且您刚刚使用版本 2.1.4 完成了这两个步骤 - 在撰写本文时,您只需要 Microsoft .NET Core SDK 2.1.402。为了稍微清理一下,我卸载了每个 .NET Core SDK/Runtimes/Packages 并从 here.
中获取了最新的
注:我跟着this blog post from Jeff Atwood回答了一个问题,解决的时间太长了。希望对您有所帮助。
编辑:
.NET Core 2.2 的好消息:您只需按如下方式编辑 .csproj:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<RuntimeFrameworkVersion>2.2.0</RuntimeFrameworkVersion>
</PropertyGroup>
编辑:
不应再手动更新元包。 This is the recommendation for updating AspNetCore。元包的版本取决于安装的SDK。
将此行添加到 .csproj 文件后,我仍然看到这个问题。
<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>
将 Version 属性添加到 Microsoft.AspNetCore.App 包参考解决了我的问题。我改变了这个:
<PackageReference Include="Microsoft.AspNetCore.App" />
对此:
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.5" />
中的第 1 步可能会自动执行此操作,但我已经拥有最新版本的 Microsoft.AspNetCore.App。
呃。这个问题对我来说非常棘手。我执行了 中的步骤,但错误仍然存在。然后我做了:
- 构建 > 清理解决方案
- 构建 > 构建解决方案
现在可以使用了。
这有助于了解您的 SDK 版本,可在此处找到:C:\Program Files\dotnet\sdk
您也可以在发布时遇到此问题。将这些行添加到 publish_profile.pubxml 文件可能会有所帮助:
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion>
将 2.1.0 替换为 2.1.4 或您正在使用的任何版本。
我遇到了问题,我的 AspNetCore.App-metapackage 引用的 EntityFrameworkCore (2.1.2) 版本低于 EfCore 提供程序包(NpgSql,引用 2.1.3)。结果是警告 MSB3277 (
另一个回答指出,我使用的 Microsoft.AspNetCore.App 软件包(当时为 2.1.1)低于上一个稳定版本 (2.1.4)。无法更改包版本(见下图)。
我在 class 库项目
中遇到了与 Microsoft.NETCore.App 相同的问题我什至没有注意到我使用了比可用版本更旧的元包。直到今天,我总是检查 NuGet 包管理器中是否有可用的更新。我使用默认项目模板并始终安装最新的 .NetCore SDK,相信这就足够了。不是。
调查此问题后,我发现我可以强制我的项目使用特定的 .NETCore.App 或 AspNetCore.App 元包与包管理器控制台(Install-Package Microsoft.NETCore.App -Version 2.1.4
或Install-Package Microsoft.AspNetCore.App -Version 2.1.4
).
在该命令之后我遇到了构建错误 (NETSDK1061: The project was restored using Microsoft.NETCore.App version 2.1.4, but with current settings, version 2.1.0 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish.
)。
我试图找到有关该问题的任何帮助,发现一些 GitHub 问题(例如 this one)看起来很相似,但实际上是不同的。 我找到了 descriptive doc,但这并没有真正帮助我。
我从 Rick Strahl 那里找到了一篇 pretty helpful blog post,解释了哪些包可用以及每个包的用途是什么。这是一个很好的开始。
这是我的解决方案:
第一步:
在程序包管理器控制台中执行 Install-Package Microsoft.AspNetCore.App -Version [VersionOfYourChoice]
and/or Install-Package Microsoft.NETCore.App -Version [VersionOfYourChoice]
。
第 2 步: 如下所示编辑 .csproj:
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.4</RuntimeFrameworkVersion> <- add this line
<!--<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> --> <- alternative
</PropertyGroup>
还有一点要点:如果您使用 Win10,请帮自己一个忙,检查已安装的 .NET Core SDK/Runtimes 等。卸载每个 SDK/Runtimes 您不需要的(再次:查看 Rick 的博客 post)。 您只需要您当前在一个项目中定位的对象。
例如:如果您正在处理一个 .NET Core 项目,并且您刚刚使用版本 2.1.4 完成了这两个步骤 - 在撰写本文时,您只需要 Microsoft .NET Core SDK 2.1.402。为了稍微清理一下,我卸载了每个 .NET Core SDK/Runtimes/Packages 并从 here.
中获取了最新的注:我跟着this blog post from Jeff Atwood回答了一个问题,解决的时间太长了。希望对您有所帮助。
编辑: .NET Core 2.2 的好消息:您只需按如下方式编辑 .csproj:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<RuntimeFrameworkVersion>2.2.0</RuntimeFrameworkVersion>
</PropertyGroup>
编辑: 不应再手动更新元包。 This is the recommendation for updating AspNetCore。元包的版本取决于安装的SDK。
将此行添加到 .csproj 文件后,我仍然看到这个问题。
<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>
将 Version 属性添加到 Microsoft.AspNetCore.App 包参考解决了我的问题。我改变了这个:
<PackageReference Include="Microsoft.AspNetCore.App" />
对此:
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.5" />
呃。这个问题对我来说非常棘手。我执行了
- 构建 > 清理解决方案
- 构建 > 构建解决方案
现在可以使用了。
这有助于了解您的 SDK 版本,可在此处找到:C:\Program Files\dotnet\sdk
您也可以在发布时遇到此问题。将这些行添加到 publish_profile.pubxml 文件可能会有所帮助:
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion>
将 2.1.0 替换为 2.1.4 或您正在使用的任何版本。