NETSDK1061:项目已使用 Microsoft.NETCore.App 版本 1.0.0 恢复,但在当前设置下,将使用 2.0.9 版本
Posted
技术标签:
【中文标题】NETSDK1061:项目已使用 Microsoft.NETCore.App 版本 1.0.0 恢复,但在当前设置下,将使用 2.0.9 版本【英文标题】:NETSDK1061: The project was restored using Microsoft.NETCore.App version 1.0.0, but with current settings, version 2.0.9 would be used instead 【发布时间】:2019-05-12 05:44:26 【问题描述】:我正在开发一个移动应用程序并使用 MS App Center for CI。昨天单元测试项目未能在 App Center 中构建,出现以下错误。我无法在任何开发人员机器上重现该问题,此错误仅在 App Center 中出现。
error : NETSDK1061: The project was restored using Microsoft.NETCore.App version 1.0.0, but with current settings, version 2.0.9 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. Typically this issue can occur if the RuntimeIdentifier property is set during build or publish but not during restore. For more information, see https://aka.ms/dotnet-runtime-patch-selection.
他们的付费支持只是提供基础知识、清理项目、回滚我的最后一次提交等。以前有人在 App Center 上遇到过这个问题吗?
【问题讨论】:
避免此问题的最简单方法是使用您要发布的相同配置进行构建,然后运行 dotnet publish --no-restore -r win10-x64 或您希望发布到的任何运行时 我无法控制 App Center 使用的命令,它是基于 SaaS 的 CI。 你可能不得不向当时有控制权的人提出这个问题 如果这是唯一的解决方法,那么很可能是他们的平台有问题。有没有办法控制 csproj 或 sln 文件中的配置? 【参考方案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>
【讨论】:
嗨,Paul,您能否详细说明一下这个答案,我在将发布作为自托管可执行文件运行后遇到了这个问题,是否会悄悄地换掉目标 SDK?您建议的解决方案简单明了并且有效,所以谢谢您 这个 XML 来自哪里? 来自 csproj 文件【参考方案2】:如果您使用 Azure DevOps,请勿编辑项目文件。使用“dotnet restore”(https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/dotnet-core?view=azure-devops) 而不是 Nuget 恢复:
替换这个:
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
有了这个:
- script: dotnet restore
【讨论】:
【参考方案3】:我使用的是 Visual Studio 2019。当我第二次尝试将我的项目发布为自包含项目时遇到了这个问题。
我为摆脱这个错误所做的是:
将部署模式更改为框架相关 发布项目 将其改回自包含并再次发布这似乎是由一些故障缓存引起的,可以通过切换到不同的部署模式来清除。
【讨论】:
这对我有帮助!【参考方案4】:尝试将<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
添加到您的<PropertyGroup>
标记中。示例:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>
【讨论】:
唯一对我有用的解决方案。谢谢你拯救了我的一天!【参考方案5】:在 .csproj 中添加这个
<PropertyGroup>
<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>
</PropertyGroup>
【讨论】:
这让我的一天..哎呀晚上!【参考方案6】:我在 Visual Studio 2019 上,this answer 让我走上了正确的道路,我的程序是:
从我的机器上卸载Microsoft .NET Core SDK
的所有实例。
重新启动计算机。
从here 安装了最新版本的SDK
。
【讨论】:
【参考方案7】:我遇到了这个问题,因为我有一个不再存在的 nuget 源。删除有故障的 nuget 源后,我恢复了项目,一切正常。
我通过命令行恢复了项目:
dotnet restore
【讨论】:
【参考方案8】:我在 Azure Devops 中构建时遇到了这个问题,其他答案都无法解决。我的构建和发布步骤已经有匹配的--runtime
选项。
对我来说,解决方法是在.csproj
文件中添加以下内容(将RuntimeIdentifier
替换为适合您的部署方案的正确文件):
<PropertyGroup>
...
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
【讨论】:
【参考方案9】:检查一下我在这里建议的解决方案 (Using Azure Pipelines with multi targeting projects I get error NETSDK1061),也许它也适合你:
- task: NuGetToolInstaller@0
inputs:
versionSpec: '>=4.3.0'
checkLatest: true
【讨论】:
【参考方案10】:为我解决这个问题的方法是通过更改 msvc 中的参数来更新用于还原的默认 NuGet 包缓存“C:\Users\.nuget\packages”:
工具 > 选项 > NuGet 包管理器 > 包还原 > 允许 NuGet 下载丢失的包并在 Visual Studio 中构建期间自动检查丢失的包。
【讨论】:
以上是关于NETSDK1061:项目已使用 Microsoft.NETCore.App 版本 1.0.0 恢复,但在当前设置下,将使用 2.0.9 版本的主要内容,如果未能解决你的问题,请参考以下文章
小5聊无法打开项目文件。 无法找到 .NET SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配
错误NETSDK1007找不到“E:ProjectMyProjectMyProject.CommonMyProject.Utility.csproj”的项目信息。这可以指示缺少一个项目引用。M