Visual Studio 2017はMicrosoft.NETCore.Appパッケージを更新できません(「プロジェクトによってブロックされました」)


82

Microsoft.NETCore.App1.1.2をターゲットにしているdotnetコアアプリがあります。そのプロジェクトに対してテストするためのテストプロジェクトを作成しましたが、ビルド中に次の警告に気付きました。 ここに画像の説明を入力してください

NuGetパッケージマネージャーを開くと、警告が正しいことがわかります。テスト対象のプロジェクトには、異なるバージョンのMicrosoft.NETCore.Appがあります。 ここに画像の説明を入力してください ここに画像の説明を入力してください

私の問題は、Visual Studioでそのバージョンを更新できないことです。そのため、この問題を解決する方法がわかりません。 ここに画像の説明を入力してください 理想的には、ドロップダウンをクリックして適切なバージョンを選択するだけですが、Visual Studioは、「プロジェクトまたはpackages.configの追加の制約」。そのパッケージをどのように更新する必要がありますか?Visual Studioが参照している「追加の制約」とは何ですか?


テストプロジェクトがダウングレードをブロックしているようです。ソリューションを右クリックして、ソリューションのnugetパッケージの管理を選択し、すべてのプロジェクトを同時に別のバージョンに移動しようとしましたか?
ケンタッカー

私はそれについて考えていませんでしたが、試してみたところ、同じ「Blockedbyproject」エラーが発生しました。また、他のプロジェクトは1.1.2からの移行がブロックされています。VSの最新のアップデートもインストールしましたが、それは役に立ちませんでした。
riqitang 2017年


この質問/回答で見つけたすべての情報を収集しました:stackoverflow.com/questions/52518059/…この問題は本当に質問のようです。ここでの答えは私のシナリオでは完全ではありません
Joshit 2018

ソリューション内のさまざまなプロジェクトで、誤ってさまざまなバージョンの.netコアフレームワークをターゲットにしていたときに、同じエラーが発生しました。各ターゲットのプロジェクトプロパティが同じバージョンであることを確認してください。
obaylis

回答:


51

2018年の編集:自分が何をしているかを本当に理解している場合にのみ、パッケージを更新するための指示に従ってください。ほとんどの場合、このパッケージ(または「プロジェクトによってブロックされた」とマークされた他のパッケージ)を手動で更新する必要はありません。フレームワーク依存のアプリは利用可能な最新のランタイムを使用し、自己完結型のアプリケーションはこのパッケージの新しいバージョンを使用して追加のビルドを自動的に実行します。(テストプロジェクトでこのパッケージをアップグレードする必要があるエッジケースがいくつかあります。この場合、他のオプションについては、このQ&Aを追加<TargetLatestRuntimePatch>true</…>して参照してください

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すべてのプロジェクトで設定します。


2
あなたは正しかった:私は.csprojファイルを開いてその<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>行を削除した。VSはまだ手動でバージョンを変更することを許可しませんが、少なくとも今は正しいバージョンです(あなたが言ったように1.1.2に更新されました)
riqitang 2017年

48

Entityframework.Coreパッケージを.NETCore 2Webアプリにインストールしようとしても同様の問題が発生しました。この問題を解決するために、パッケージマネージャーコンソールから強制的にインストールしました。

Install-Package Microsoft.NETCore.App -Version 2.0.5

(2.0.5は当時の最新バージョンでした)

お役に立てば幸いです。平和。


7
これは私が2.1.1にアップグレードするのに役立ちました->素晴らしい答えであり、私が見つけることができるすべての記事から欠落しています。
ポール

これはついに私にもうまくいきました。プロジェクトごとにVS2017のpmcでこれを呼び出した後、v2.1.0からv2.1.3にアップグレードしました
Paul Meems

1
Microsoft.NETCore.App・パッケージのインストール
Dorathoto

5
なぜそれは「プロジェクトによってブロックされた」のですか?これはある種のバグですか、それとも正当な理由がありますか?正当な理由がある場合、おそらく上記を行うことは良い考えではありませんか?それとも、上記の問題を修正しますか?
niico

このヒントをありがとう。したがって、「プロジェクトによってブロックされた」は「VSNuGetGUIによってブロックされた」と判明しました。
グリム

19

私にとっては追加

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

トリックをしました

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

したがって、これは現在のマシン上のフレームワークの最新バージョンを対象とします。ローカルコンピューターにパッチが適用され、ホストサーバーにパッチが適用されている場合、これは問題になりませんか?
jonmeyer

自己完結型の展開を行っているため、実際にはわかりません。しかし、大げさな推測として、「最新」と書かれていて、存在しない場合はまったく使用しないという特定のバージョンがないので、私は想像します。@jonmeyer
gsharp

ソリューションにさまざまなバージョンをインストールしました。これらすべてを編集して、この行を追加しました。それらを同じバージョンにしてから、その行を再度削除しました。しかし、解決のためにnugetパッケージを管理すると、プロジェクトによってメッセージがブロックされます。
sam

@sam他のソリューションも試しましたか?30票以上の2つの回答が一部の人々にも有効であるようです。
gsharp 2018

ええ。やった。私がやろうとしているのは、UIのソリューションオプションのnugetパッケージの管理を使用し、マウスクリックを使用してインストール/アンインストールすることです。csprojファイルを手動で編集する必要はありません。そして、私はUIを使用してそれを行うことができませんでした。あなたのやり方や他のオプションは機能しますが、UIは機能しません。
sam

7

短い答え

Microsoft.AspNetCore.App.csprojファイルのパッケージ参照に明示的なバージョンを追加します。

長い答え

まったく新しい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.App2.1.0バージョンのMicrosoft.Extensions.Logging.Abstractionsパッケージが必要であるという警告になりましたが、もちろんバージョン2.1.1は解決されました。

Micorsoft.AspNetCore.App警告を修正するためにバージョン2.1.1に更新しようとすると、OPで言及されているように、パッケージマネージャーによってブロックされました。

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>

3

私も同じ問題を抱えていましたが、問題はパッケージにあると思います。

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

バージョンを正確に指定した後、問題は解決しました。

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

私が知っているように、そのエラーはバージョン番号のときに発生します


2

別の可能な解決策。ではcsproj、ファイル、あなたがアップグレードしたいバージョンのターゲットフレームワークを更新します。変更を加えた後、以下のスニペットに従って、ソリューションNuGetパッケージマネージャーを介してパッケージをアップグレードできます。

前:

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

後:

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

0

プロジェクト(またはALT + Enter)を右クリック->プロパティ->アプリケーション->ターゲットフレームワーク(.NET Coreフレームワーク(この場合は1.1)を選択)で解決しました。


0

SDKとランタイムをアップグレードした後、プロジェクトを再作成し、古いコードと構成を新しいプロジェクト内にドロップすることをお勧めします。それ以外は、役に立たない微調整や未知の構成に多くの時間を費やすことになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.