シンプルなプロジェクトでVisual Studio 2015にnuget Microsoft.VisualStudio.QualityTools.UnitTestFramework
をインストールしようとすると、次のメッセージが表示されます。
パッケージ 'Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.0.30319.1'をインストールできませんでした。 '.NETFramework、Version = v4.5.2'をターゲットとするプロジェクトにこのパッケージをインストールしようとしていますが、パッケージには、そのフレームワークと互換性のあるアセンブリ参照またはコンテンツファイルが含まれていません。詳細については、パッケージの作成者にお問い合わせください。
しかし、同じプロジェクトのVisual Studio 2013でこのパッケージをインストールしようとすると、これは機能します。
このナゲットをVisual Studio 2015にインストールするにはどうすればよいですか?
時間が経ちましたが、それは私に起こっています。そして、私はそれがフレームワークのバージョンとは何の関係もないことを発見しました。エラーメッセージの重要なテキストは、「...ただし、パッケージにはアセンブリ参照またはコンテンツファイルが含まれていません...」です。
実際、私のパッケージにはNugetの目に見えるコンテンツはありません。サードパーティのネイティブライブラリと、Xcopyコマンドでビルド後のイベントを追加するInstall.ps1を含む非従来のフォルダーがあります。
簡単なターンアラウンドとして、ダミーのファイルをパッケージのContentフォルダーに置くか、libの他のダミーのコンテンツ、空のファイルノード(試していない)などを入れます。
編集2017年5月29日
私はこの答えが他の人にとって有用であると思っています、そしてそれは私がもう少し詳しく述べるつもりである理由です。
私が言ったように、問題はパッケージ内にコンテンツがあることをNugetが認識しないことですが、2つの原因がある可能性があります。
パッケージにはスクリプトなどを使用してコンテンツを移動するため(実際には)、目に見えるコンテンツはありません。回避策としてダミーのコンテンツを作成する必要があります。
コンテンツを持たなければならないパッケージの仕様に誤りがあり(コメントのEvgeni Nabokovの場合のように)、仕様を修正して適切なものにする必要があります。
悪い英語でごめんなさい。
このエラーメッセージは、ご使用のフレームワークバージョンに対応するバージョンのnugetがないことを示しています。
VS2013では、おそらく.Netフレームワークの4.5.0または4.0.0バージョンでプロジェクトを作成します。
プロジェクトの.Netバージョンを4.5.2に変更しようとしましたか?
これは、ソリューションの.NET標準と対応するNuGetパッケージが一致しない場合に発生する可能性があります。 このリンク の表を次に示します。
╔════════════════════════════╦═══════════════════════════════════════════════════════════════╗
║ .NET Platform ║ .NET Standard ║
╠════════════════════════════╬═══════╦═══════╦═══════╦═══════╦═══════╦═══════╦═══════╦═══════╣
║ ║ 1.0 ║ 1.1 ║ 1.2 ║ 1.3 ║ 1.4 ║ 1.5 ║ 1.6 ║ 2.0 ║
╠════════════════════════════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣
║ .NET Core ║ → ║ → ║ → ║ → ║ → ║ → ║ 1.0 ║ vNext ║
║ .NET Framework ║ → ║ 4.5 ║ 4.5.1 ║ 4.6 ║ 4.6.1 ║ 4.6.2 ║ vNext ║ 4.6.1 ║
║ Xamarin.iOS ║ → ║ → ║ → ║ → ║ → ║ → ║ → ║ vNext ║
║ Xamarin.Android ║ → ║ → ║ → ║ → ║ → ║ → ║ → ║ vNext ║
║ Universal Windows Platform ║ → ║ → ║ → ║ → ║ 10.0 ║ → ║ → ║ vNext ║
║ Windows ║ → ║ 8.0 ║ 8.1 ║ ║ ║ ║ ║ ║
║ Windows Phone ║ → ║ → ║ 8.1 ║ ║ ║ ║ ║ ║
║ Windows Phone Silverlight ║ 8.0 ║ ║ ║ ║ ║ ║ ║ ║
╚════════════════════════════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╝
フレームワークと.NET標準バージョンの両方を一致させる必要があります。 .NET標準1.4と.NET Framework 4.6.1が好きです。 .NET標準を作成することにより、Microsoftはすべての.NETプラットフォームで一貫したAPIを使用するという要件を成文化しています。ソリューションをこれらのレベルの互換性「非互換性」に移行すると、または各更新後に車輪を再発見すると、過去の記憶になります。
TeamCityでナゲットパッケージをビルドし、ローカルのアーティファクトで公開してから、それらのパッケージを他のプロジェクトで使用しようとすると、この問題が発生しました。
この問題を回避するには、TeamCityで、BuildSteps ==> NuGet Pack ==>パッケージパラメーター==>仕様ファイルを選択し、nuspecファイルよりも.csprojファイルを選択し、「。nuspecよりプロジェクトファイルを優先」オプションを選択する必要があります
そのようにビルドされたパッケージは、インポートしても問題なく、VSからの苦情もなくなります。
私はこれを手に入れましたが、すでにフレームワーク4.6プロジェクトで問題なく使用していたため、意味がありませんでした。エラーは、フレームワーク4.6では動作しないことを教えてくれました。
最後に、別のテストプロジェクトを作成し、古いテストプロジェクトからcsファイルなどをコピーし、NuGetを介してUnitTestFrameworkをインストールすることで解決しました。正常に動作します。
だから、マイクロソフトだけが解決できる何かが起こると思いますが、もう一度やり直すとそれが修正されるようです。
DynamicInterop.0.8.1.nupkgのフォルダー 'lib\netstandard1.2'にdllファイルがあることがわかりました。フォルダー名をlib\net40に変更しただけで、パッケージは正しくインストールされます(VS2013を使用)。また、.nupkgは単なる.Zipファイルであるため、Zipツールを使用してコンテンツを操作できます。
「クラスライブラリ」ではなく「ユニットテストプロジェクト」を作成すると問題が解決するようです。私は運のない「クラスライブラリ」と戦いましたが、そのプロジェクトを削除して「Unit Test Project」テンプレートから新しいプロジェクトを作成すると、Microsoft.VisualStudio.QualityTools.UnitTestFramework version 10.0.0.0になりました。インストール済み。