NuGetPackageImportStampは何のためにあるのですか?
質問
プロジェクトに特定の NuGet パッケージを追加すると、.csproj ファイルの最初のプロパティ グループに奇妙な項目が表示されることがあります。
<PropertyGroup>
...
<NuGetPackageImportStamp>3d051ef3</NuGetPackageImportStamp>
</PropertyGroup>
スタンプは毎回異なり、連続したものではなさそうです。
への言及が見当たりません。
<NuGetPackageImportStamp>
への言及が見当たりません。 これは何のためにあり、どのように機能するのでしょうか? それは必要ですか?
これを毎回追加しているように見えるパッケージの1つが StyleCop.MSBuild で、少なくとも現在の 4.7.49 バージョンではそうなっています。 このパッケージを新しいプロジェクトに追加するだけで、プロジェクト ファイルにこの謎のアイテムが表示されます。
どのように解決するのですか?
NuGetPackageImportStamp は、Visual Studio 2013 およびそれ以降のバージョンで、NuGet パッケージが MSBuild のインポートを追加または削除したことを検出できない場合の回避策です。
この回避策は、Visual Studio の古いバージョンでは必要ありません。Visual Studio 2013 でも プロパティは安全に削除することができます。 : ソリューションを閉じて再び開くと、インポートされた MSBuild ターゲットが Visual Studio によって再ロードされます。
NuGet ソースコード を見ると、パッケージがMSBuildインポートを追加または削除するときに、NuGetがこのプロパティを追加することがわかります。毎回、新しい GUID を使用します。Visual Studio* 2013 は、プロジェクトが変更されたことを検出し、その再読み込みを提供します。MSBuild インポートを追加または削除するだけでは、Visual Studio 2013 が実行時にプロジェクトが変更されたことを知るには十分ではなく、この回避策によって NuGet が解決することになるのです。
StyleCop.MSBuild NuGet パッケージにはカスタム MSBuild ターゲットが含まれているため、この NuGet パッケージを追加または削除すると、このプロパティが追加されるようになります。
アップデイト : Matt Wardのコメント は正しく、重要です。
<ブロッククオートにはまだコードがあり NuGet パッケージスタンプを追加する NuGet を追加するコードが残っており、そのコードはもはや Visual Studio 2013 をチェックしません。
以下は、私の最重要推奨事項です。
- Visual Studio または Powershell のいずれかを使用して新しいプロジェクトを作成します。
-
古い csproj を更新して、それが動作しない場合、この古い csproj と Visual Studio または Powershell のいずれかで作成した新しい動作する csproj を比較します。新しい動作する csproj が
<NuGetPackageImportStamp>
ディレクティブを使用している場合は、それを古い壊れた csproj に追加して、問題が修正されるかどうかを確認します。 にかかわらず を使用している Visual Studio のバージョンに関係なく、問題が修正されるかどうかを確認します。 -
古い csproj がまだ動作していない場合は、以下の方法を検討してください。
<TargetFrameworkProfile>
ディレクティブを考えてみてください。これは新しい動作する csproj に存在しますか?これを削除することを検討してください。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] msiexec を使用せずにコマンドラインから MSI ファイルをアンインストールする
-
[解決済み] <Database> コンテキストを支えるモデルが、データベース作成後に変更されました。
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] URLのPath.Combineは?
-
[解決済み] プライベートメソッドのユニットテストはどのように行うのですか?
-
[解決済み] いくつかのプロジェクトが複数のソリューションに含まれている場合、すべてのソリューションに共通のnugetパッケージフォルダを設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMLにSystem.Stringを埋め込む
-
[解決済み] フレームワークとアーキテクチャの違いは何ですか?[クローズド]
-
[解決済み] NetFx45WebLinkとNetFx45RedistLinkの違いは何ですか?
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] .NET Framework 4 マルチターゲティングパックがアンインストールできない
-
[解決済み] Moq Callbackについて教えてください。
-
[解決済み] .net の OOM 問題を解決する必要があります。
-
[解決済み] System.Timers.Timer vs System.Threading.Timer
-
[解決済み] MemoryStreamから文字列を取得する方法は?
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?