警告:MyProject.csprojを参照するすべてのプロジェクトは、nugetパッケージMicrosoft.Bcl.Buildをインストールする必要があります


90

VS 2012で開発されたASP.NET MVC 4アプリがあります。アプリは、メインプロジェクト(MyProject)、単体テストプロジェクト(MyProject.Tests)、Azureデプロイメントプロジェクト(MyProject.Azure)、およびいくつかの汎用ライブラリプロジェクト。

ソリューションまたはメインプロジェクトのいずれかを右クリックし、[NuGetパッケージの管理]を選択すると、先月かそこらで利用可能になったように見える一連のMicrosoftアップデートが表示されます。[すべて更新]ボタンをクリックすると、更新は明らかに問題なくインストールされますが、ソリューションをビルドすると、次のエラーメッセージが2回表示されます。

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

では、MyProjectを参照する2つのプロジェクト、MyProject.TestsとMyProject.Azureがあります。MyProject.Testsを右クリックして、ManageNuGet Packagesを選択し、Microsoft.Bcl.Buildを追加します。これにより、2つの警告のうちの1つが取り除かれます。しかし、VSには、MyProject.AzureプロジェクトのNuGetパッケージを管理するオプションがありません

Microsoft.Bcl.BuildパッケージをAzure展開プロジェクトに追加するにはどうすればよいですか?

編集:

ユーザースウェルのおかげで、この問題に関するMicrosoft Connectの問題がここで開かれたことがわかりまし


2
接続の問題への言及をありがとう、これは迷惑な問題です。
Paul Keister

1
デプロイメントプロジェクトのビルド時の警告に関連して、プロジェクトの公開時に誤った警告を引き起こすバグもあります。パブリッシュ関連のバグはConnectでも報告されています。回避策はわかりません。
エドワードブレイ2014

3
同じ問題が、他のプロジェクトへの参照があるWiXプロジェクトでも発生します(プロジェクトの出力(別名「熱」)を収集するため)。WiXインストーラープロジェクトがNuGetパッケージをインストールすることはまったく意味がありません。ああ!
Jaans 2014年

回答:


54

警告をダブルクリックすると、警告を無効にする手順が表示されます。

Nugetをまだサポートしていないプロジェクトからのプロジェクト参照を無効にしても安全です。

Microsoft.Bcl.Build.targetsからコピーされた太字の以下の部分を参照してください。

BclBuildValidateNugetPackageReferences

このターゲットは、参照に対してSkipValidatePackageReferences = trueを設定することにより、プロジェクト参照に対して無効にすることができます。

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>

4
アーサー、プロパティの代わりにAdditionalPropertesメタデータ値を設定してみてください。
TheESJ 2013

5
@TheESJ私はWiXプロジェクトでこの問題を抱えていて、Propertiesの代わりにAdditionalPropertiesを設定するように見えます。私はなぜかかわら知ることに興味がある
LCを。

3
これはソリューションのビルドだけで機能しますが、実際にazureプロジェクトをスタートアッププロジェクトとして[実行]を使用すると、再び警告が表示されます。
架空の

2
ビルドについても作業しないでください。VS 2015 Community Edition。
Artyom

2
VS2015 Professionalでは機能しませんでした。この行を追加しても同じ問題があります。
aclalex 2017

63

TheESJの回答は正しいですが、文言がわかりませんでした。回答についてコメントすることはできませんので、ここで詳しく説明します。具体的には、Azureプロジェクトでこの問題が発生しており、警告を回避するには次の回避策が必要でした。

VisualStudioで警告をダブルクリックすると、Microsoft.BclBuild.targetsファイルのBclBuildValidateNugetPackageReferencesターゲットに移動します。実際のターゲット要素の上に、プロジェクト参照チェックの無効化について説明する大きなコメントブロックがあります。Azureプロジェクトはライブラリ参照を持つことができないため、これらのAzureプロジェクトがこの特定のビルドターゲットの要件を満たすことは不可能です。

ソリューション?nugetパッケージ参照を実際に追加することは不可能であるため、Azureプロジェクトからの参照チェックを無効にします。

:だから、私たちは二つのプロジェクトがあるとしMyAzureProject.ccproj参照MyProject.csprojを。次の手順を実行します:

  1. ソリューションエクスプローラーで[MyAzureProject]を右クリックし、[プロジェクトファイルの編集]を選択します。
  2. 「MyProject」へのプロジェクト参照を見つけます。次のようになります。

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. ProjectReference要素内に次の要素を追加します。

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. プロジェクト参照は次のようになります。

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. ソリューションエクスプローラーで[MyAzureProject]を右クリックし、[プロジェクトの再読み込み]を選択します。

これで再構築できるようになり、エラーはなくなりました。


17
私のバージョンのVSでは、プロジェクトファイルを編集するために右クリックする前に、まず右クリックして[プロジェクトのアンロード]を実行する必要があります
pius

2
MyAzureProject.ccprojいうよりMyAzureProject.csprojですか?
エドワードブレイ2014

参照されているプロジェクトの* .csprojファイルに '<Properties> SkipValidatePackageReferences = true </ Properties>'を追加した場合にのみ機能します。* .ccprojを編集するだけでは機能しません。
alexey 2016年

1
@piusこれは小さな機能ですが、VSのいくつかのエディションで使用できるProductivity Power Toolsの [Power Commands]の下に[Edit Project File]コンテキストメニューオプションがあります。プロジェクトをアンロードし、ワンクリックでプロジェクトファイルを開きます。
ジェフ

16

同じ問題に直面し、Microsoft.Bcl.Build.targetsを更新しようとしていました。助けにはならなかった。

調査の結果、Azureサービスプロジェクトの.csprojファイルを変更して、を含める必要があることがわかりました<Properties>SkipValidatePackageReferences=true</Properties>

これは@TheESJの回答からは明らかではなかったため、別の回答を投稿することにしました。@TheESJに感謝します。


2

この問題に何度も遭遇し、Propertiesメソッドは実際に機能しますが、Wixプロジェクトを処理するときは、代わりに以下を実行する必要がありました。

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Properties Xmlノードを使用すると、新しいエラーが発生しました。

プロジェクト 'MyInstallerProject.csproj'のOutputPathプロパティが設定されていません。このプロジェクトに対して構成とプラットフォームの有効な組み合わせを指定したことを確認してください。Configuration = 'Debug' Platform = 'x86'。このエラーは、他のプロジェクトがこのプロジェクトへのプロジェクト間参照を追跡しようとして、このプロジェクトがアンロードされているか、ソリューションに含まれておらず、参照プロジェクトが同じまたは同等のものを使用してビルドされていない場合にも表示される可能性があります構成またはプラットフォーム。

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