ChatGPT解决这个技术问题 Extra ChatGPT

Visual Studio 2017 无法更新 Microsoft.NETCore.App 包(“被项目阻止”)

https://i.stack.imgur.com/bOqUI.png

https://i.stack.imgur.com/XqkkI.png

https://i.stack.imgur.com/cbxqp.png

看起来测试项目正在阻止降级。您是否尝试右键单击解决方案并为解决方案选择管理 nuget 包并将所有项目同时移动到不同的版本?
我没有想到这一点,但我只是尝试了一下,我得到了同样的“被项目阻止”错误。另一个项目也被阻止远离 1.1.2。我还安装了 VS 的最新更新,但这并没有帮助。
我收集了我在这个问题/答案中找到的所有信息:stackoverflow.com/questions/52518059/…,因为这个问题似乎真的是一个问题。对于我的场景,这里的答案并不完整
当我在解决方案中的不同项目中错误地针对不同版本的 .net 核心框架时,出现了同样的错误。确保每个目标的项目属性版本相同。

M
Martin Ullrich

EDIT 2018:只有在你真的知道自己在做什么的情况下,才按照更新包的说明进行操作。在大多数情况下,您永远不需要手动更新此包或其他标记为“被项目阻止”的包。依赖于框架的应用程序将使用可用的最新运行时,而自包含应用程序将使用此包的较新版本自动执行额外的构建。 (在某些极端情况下,您需要在测试项目中升级此包。在这种情况下,添加 <TargetLatestRuntimePatch>true</…>see this Q&A 以获得其他选项)

Microsoft.NET.Sdk 推断的隐式包引用无法通过 NuGet 更新。

如果您从 project.json 迁移,具有 1.1.0 引用的项目可能包含

<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>

在 csproj 文件或类似的项目中(如果您之前可能使用包管理器来设置版本):

<PackageReference Update="Microsoft.NETCore.App" Version="1.1.0" />

删除上述条目,所有包将自动引用 1.1.2(或任何已安装的 SDK 认为是最新的)。或者,在所有项目中设置 RuntimeFrameworkVersion


你是对的:我打开了 .csproj 文件并删除了 <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion> 行。 VS 仍然不允许我手动更改版本,但至少它现在是正确的版本(它更新到 1.1.2,就像你说的那样)
M
Marlon Dias

我在尝试在 .NET Core 2 Web 应用程序中安装 Entityframework.Core 包时遇到了类似的问题。为了解决这个问题,我通过包管理器控制台强制安装:

Install-Package Microsoft.NETCore.App -Version 2.0.5

(2.0.5 是当时的最新版本)

我希望它有用。和平。


这对我升级到 2.1.1 有用-> 很好的答案,并且在我能找到的所有文章中都没有。
这最终也对我有用。在为每个项目在 VS2017 的 pmc 中调用它之后,我从 v2.1.0 升级到 v2.1.3
安装包 Microsoft.NETCore.App
为什么它会“被项目阻止”呢?这是某种错误还是有充分的理由?如果有充分的理由,也许这样做不是一个好主意?或者它是否解决了上述问题?
感谢您的提示。所以“被项目阻止”结果变成“被VS NuGet GUI阻止”。
g
gsharp

对我来说添加

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

成功了

<PropertyGroup>
  <TargetFramework>netcoreapp2.1</TargetFramework>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>

所以这将针对当前机器上最新版本的框架。如果本地计算机已修补并且主机服务器已修补,那么这不会遇到问题吗?
我实际上不知道,因为我们正在进行自包含部署。但作为一个疯狂的猜测,我会想象,因为它说“最新”并且没有特定版本,如果不存在它就不会使用任何版本。 @jonmeyer
我的解决方案中安装了不同的版本。我编辑了所有这些以添加这一行。将它们带到相同的版本,然后再次删除该行。但是当我为解决方案管理 nuget 包时,我仍然收到项目阻止的消息。
@sam 你也尝试过其他解决方案吗?似乎 30+ 票的两个答案也适用于某些人。
是的。我做到了。我想要做的是在 UI 中使用管理 nuget 包进行解决方案选项,并使用鼠标单击安装/卸载。不必手动编辑 csproj 文件。而我无法使用 UI 做到这一点。您的方式和其他选项有效,但 UI 不起作用。
b
bugged87

简答

将显式版本添加到 .csproj 文件中的 Microsoft.AspNetCore.App 包引用。

长答案

我有一个全新的 netcoreapp2.1 项目。以下内容位于 .csproj 文件中。请注意,没有与 Microsoft.AspNetCore.App 包引用关联的版本。

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  ...
</ItemGroup>

我添加了对 Microsoft.Extensions.Logging.Abstractions 包的显式引用以解决依赖项不匹配(构建错误)。 Micorsoft.AspNetCore.App 想要此依赖项的 2.1.0 版,但另一个包想要 2.1.1 版。我的 .csproj 文件现在看起来像这样。

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

这将构建错误减少为关于 Micorsoft.AspNetCore.App 需要 Microsoft.Extensions.Logging.Abstractions 包的 2.1.0 版本的警告,但当然,2.1.1 版本已得到解决。

如 OP 所述,试图将 Micorsoft.AspNetCore.App 更新到版本 2.1.1 以修复警告被包管理器阻止。

我更新了我的 Micorsoft.AspNetCore.App 包引用,以明确使用这样的版本 2.1.1。

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

这修复了构建警告并解除了包管理器中 Microsoft.AspNetCore.App 的所有版本。我什至能够删除对 Microsoft.Extensions.Logging.Abstractions 的显式引用,而无需重新引入原始错误。最终的 .csproj 看起来像这样,没有任何问题。

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  ...
</ItemGroup>

d
ddagsan

我有同样的问题,我认为问题出在包装上。

<PackageReference Include="Microsoft.AspNetCore.App" />

在我准确指定版本后问题得到解决。

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />

据我所知,该错误发生在版本号


S
Shooresh

另一种可能的解决方案。在 csproj 文件中,将目标框架更新为您要升级到的版本。进行更改后,根据以下代码段,可以通过解决方案 NuGet 包管理器升级包。

前:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

后:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

h
harlandgomez

我通过简单地解决了它:右键单击项目(或 ALT+ Enter)-> 属性-> 应用程序-> 目标框架(选择 .NET Core 框架(在本例中为 1.1))


S
Shadi Alnamrouti

最好的建议是在升级 SDK 和运行时后重新创建您的项目,然后将旧代码和配置放到新项目中。除此之外,您将花费太多时间进行无用的调整和未知的配置。