web-dev-qa-db-ja.com

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

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パッケージを選択して、Microsoft.Bcl.Buildを追加できます。これは、2つの警告のうちの1つを取り除きます。しかし、VSは、MyProject.AzureプロジェクトのNuGetパッケージを管理するオプションを提供しません

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

編集:

ユーザー swell のおかげで、この問題に対するMicrosoft Connectの問題が解決されたことがわかりました here

86

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

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

以下のbold 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>
53
TheESJ

TheESJによって提供された答えは正しいですが、言葉遣いは私には明確ではありませんでした。私は答えにコメントできないので、ここで詳細を提供します。具体的には、Azureプロジェクトでこの問題が発生しており、警告を消すには次の回避策が必要でした。

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

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

[〜#〜] example [〜#〜]

したがって、2つのプロジェクトがあると仮定します。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]を右クリックし、[プロジェクトの再読み込み]を選択します。

これで、再構築できるようになり、エラーがなくなるはずです。

61
AggieEric

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

調査の結果、Azure Serviceプロジェクトの.csprojファイルを修正して、<Properties>SkipValidatePackageReferences=true</Properties>

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

15
Santosh

私はこの問題に何度も遭遇し、Propertiesメソッドは実際に機能しますが、Wixプロジェクトを扱うときは、代わりに次のことをしなければなりませんでした。

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

プロパティXmlノードを使用すると、新しいエラーが発生しました。

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

0
ozz