【问题标题】:Build error of ASP.NET Core - "...current settings, version 2.1.0-preview3-26411-06 would be used instead"ASP.NET Core 的构建错误 - “...当前设置,将使用 2.1.0-preview3-26411-06 版本”
【发布时间】:2018-05-07 21:10:59
【问题描述】:
我使用dotnet 创建了一个示例项目,但在构建项目时出现以下错误:
错误:项目已使用 Microsoft.NETCore.App 版本 2.1.0-rc1 恢复,但在当前设置下,将使用版本 2.1.0-preview3-26411-06。要解决此问题,请确保将相同的设置用于还原和后续操作(例如构建或发布)。通常,如果在构建或发布期间设置了 RuntimeIdentifier 属性,但在恢复期间没有设置,则通常会出现此问题。
有什么问题?我正在使用Visual Studio 2017 build 15.7.0。
【问题讨论】:
标签:
asp.net-core
.net-core
【解决方案1】:
我收到了类似的错误消息:
项目是使用 Microsoft.NETCore.App 2.0.7 版本恢复的,但在当前设置下,将使用 2.0.0 版本。要解决此问题,请确保将相同的设置用于还原和后续操作(例如构建或发布)。通常,如果在构建或发布期间设置了 RuntimeIdentifier 属性,但在恢复期间没有设置,则通常会发生此问题
我将 RuntimeFrameworkVersion 设置添加到 .csproj 文件中,它为我解决了一个问题:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RuntimeFrameworkVersion>2.0.7</RuntimeFrameworkVersion><!--here is the fix-->
</PropertyGroup>
<ItemGroup>
<PackageReference Update="Microsoft.NETCore.App" Version="2.0.7" />
</ItemGroup>
【解决方案2】:
Visual Studio 似乎正在使用不同的 .NET Core 版本进行恢复/构建/发布。
要解决此问题,您可以在 .csproj 文件中添加 TargetLatestRuntimePatch 属性:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>
详情请见this page。
【解决方案3】:
就我而言,在 .csproj 文件中我更改了
<ItemGroup>
<PackageReference Update="Microsoft.NETCore.App" Version="2.0.5" />
</ItemGroup>
到:
<ItemGroup>
<PackageReference Update="Microsoft.NETCore.App" Version="2.1.0" />
</ItemGroup>
它奏效了。
【解决方案4】:
我已经安装了 .NET SDK 2.2.0,发现这不是正确的版本,正确的版本被重命名为 2.1.300 以与最新版本为 2.1 的 .NET Core 应用程序同步.0.我安装了 2.1.300,一切运行正常。
【解决方案5】:
仅仅因为您安装了最新的 SDK 并不意味着您安装了最新的运行时。我永远也不会明白。
运行dotnet --info。
我得到了以下内容(此处仅显示最新安装的版本)。
.NET Core SDKs installed:
2.1.300 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:d\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
-
所以我安装了2.1.1 runtime,现在dotnet --info 也给了我2.1.1。
-
哦,2.1.3 实际上是 2.1.1,但由于某种我不完全理解或关心的原因,他们不得不增加它。
-
我重新启动了 Visual Studio,因为它似乎永远无法保持版本同步
-
我在 .csproj 文件中将以下内容添加到 PropertyGroup(卸载项目 + 编辑)
netcoreapp2.1
2.1.1
现在我认为我们不需要再指定这个了,这个 .csproj 文件今天刚刚创建了全新的,它根本没有运行时版本。无论我们应该做什么,这对我都有效。我还发现了这个 massive thread 关于 2.1.1 的版本控制,我略读了一遍,但现在点发布似乎有些复杂,所以也许这个特定版本是必要的。
因为这个错误,我最终来到了这里:
错误:项目已使用 Microsoft.NETCore.App 版本恢复
2.1.1,但在当前设置下,将使用 2.1.0 版本。要解决此问题,请确保使用相同的设置
恢复并用于后续操作,例如构建或发布。
通常,如果 RuntimeIdentifier 属性为
在构建或发布期间设置,但不是在恢复期间设置。
添加 RuntimeFrameworkVersion 是解决此问题的具体方法。
很遗憾,此错误消息没有任何链接文章,这会很有帮助。
【解决方案6】:
用途:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<UserSecretsId>aspnet-...............245435</UserSecretsId>
<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="Microsoft.NETCore.App" Version="2.1.1" />
</ItemGroup>
</Project>
【解决方案7】:
在我的情况下,问题是通过确保我有两个项目得到解决,一个依赖于另一个。
一个项目在 .csproj 文件中指定了 RuntimeIdentifier,但另一个没有。一旦我确保两者都有匹配的 RuntimeIdentifiers,问题就解决了。
【解决方案8】:
我得到的具体错误是
error : NETSDK1061: The project was restored using Microsoft.NETCore.App version 2.0.5, but with current settings, version 2.1.1 would be used instead.
我有
<ItemGroup>
<PackageReference Update="Microsoft.NETCore.App" Version="2.0.5" />
</ItemGroup>```
进一步向下文件。一旦我删除它并执行clean,项目就成功构建了。
【解决方案9】:
我有一个不同的解决方案,适用于 ASP.NET 2.1,因为我在构建和发布过程中都遇到了问题:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion> --> fix publishing issues
<PlatformTarget>AnyCPU</PlatformTarget> --> fix publishing issues
</PropertyGroup>
<ItemGroup>
<PackageReference Update="Microsoft.NETCore.App" Version="2.1.0" /> --> fix building issues
<ProjectReference Include="..\PublicSonar.Monitor.Persistent.Json\PublicSonar.Monitor.Persistent.Json.csproj" />
</ItemGroup>
</Project>
【解决方案10】:
我也有同样的经历:
项目是使用 Microsoft.NETCore.App 2.1.2 版恢复的,但在当前设置下,将使用 2.1.0 版。
从dotnet publish 命令中删除显式设置的--self-contained false 似乎对我们有用。它默认是一样的,所以为什么会有所不同,我不知道。
这是 SDK 版本 2.1.400。