我有一个针对Microsoft.NETCore.App 1.1.2的dotnet核心应用程序 . 我创建了一个测试项目来测试该项目,但在构建时我注意到了这个警告:
我打开NuGet包管理器并看到警告是正确的,正在测试的项目有不同版本的Microsoft.NETCore.App:
我的问题是Visual Studio不允许我更新该版本,所以我对如何解决这个问题感到困惑:
理想情况下,我只需单击下拉列表并选择正确的版本,但Visual Studio声称它不能这样做因为"additional constraints in the project or packages.config" . 我该怎么更新那个包? Visual Studio指的是什么"additional constraints"?
6 回答
EDIT 2018 :如果您真的知道自己在做什么,请按照更新包装的说明进行操作 . 在大多数情况下,您永远不需要手动更新此包 - 或标记为"blocked by project"的其他包 . 依赖于框架的应用程序将使用可用的最新运行时,并且自包含的应用程序将自动使用此软件包的较新版本执行额外构建 . (在某些边缘情况下,您需要在测试项目中升级此包 . 在这种情况下,为其他选项添加
<TargetLatestRuntimePatch>true</…>
和see this Q&A)无法通过NuGet更新
Microsoft.NET.Sdk
推断的隐式包引用 .如果从project.json迁移,则可能包含带有
1.1.0
引用的项目在csproj文件或类似的项目中(如果您以前可能使用包管理器来设置版本):
删除上述条目,所有软件包将自动引用
1.1.2
(或安装的SDK认为是最新的软件包) . Alernatively,在所有项目中设置RuntimeFrameworkVersion
.尝试在.NET Core 2 Web应用程序中安装Entityframework.Core包时遇到了类似的问题 . 为了解决这个问题,我通过Package Manager Console强制安装:
(2.0.5是当时的最新版本)
我希望它有用 . 和平 .
对我来说加
做了伎俩
Short Answer
将显式版本添加到.csproj文件中的
Microsoft.AspNetCore.App
包引用 .Long Answer
我有一个全新的netcoreapp2.1项目 . 以下内容位于.csproj文件中 . 请注意,没有与
Microsoft.AspNetCore.App
包引用关联的版本 .我添加了一个对
Microsoft.Extensions.Logging.Abstractions
包的显式引用来解决依赖项不匹配(构建错误) .Micorsoft.AspNetCore.App
想要这个依赖的版本2.1.0,但另一个包想要版本2.1.1 . 我的.csproj文件现在看起来像这样 .这将构建错误减少为关于
Micorsoft.AspNetCore.App
的警告,需要2.1.0版本的Microsoft.Extensions.Logging.Abstractions
包,当然,版本2.1.1已经解决 .尝试将
Micorsoft.AspNetCore.App
更新到版本2.1.1以修复警告已被OP提到的程序包管理器阻止 .我更新了我的
Micorsoft.AspNetCore.App
包引用,以明确使用版本2.1.1 .这修复了构建警告并取消阻止了包管理器中
Microsoft.AspNetCore.App
的所有版本 . 我甚至能够删除对Microsoft.Extensions.Logging.Abstractions
的显式引用,而无需重新引入原始错误 . 最终的.csproj看起来像没有问题 .另一种可能的解决在
csproj
文件中,将目标框架更新为要升级到的版本 . 在进行更改后,根据以下片段,可以通过解决方案NuGet包管理器升级包 .之前:
后:
我简单地解决了它:右键单击Project(或ALT Enter) - > Properties - > Application - > Target Framework(选择.NET Core framework(在本例中为1.1))