NuGetPackageImportStamp是Visual Studio 2013及更高版本无法检测到NuGet包是否添加或删除了MSBuild导入的解决方法.
较旧版本的Visual Studio不需要此变通方法.即使在Visual Studio 2013中,the property can safely be removed:如果关闭并重新打开解决方案,导入的MSBuild目标也将由Visual Studio重新加载.
NuGet source code显示NuGet在包添加或删除MSBuild导入时添加此属性.它每次都使用一个新的GUID.Visual Studio 2013检测到项目已更改,并提供重新加载.仅添加或删除MSBuild导入不足以让Visual Studio 2013知道项目在运行时发生了更改,这正是NuGet通过此解决方案解决的问题.
时尚警察.MSBuild NuGet包包含自定义MSBuild目标,因此添加或删除此NuGet包将导致添加此属性.
UPDATE:Matt Ward's comment是正确且重要的.
NuGet that adds the NuGet package stamp中仍有代码,并且代码不再判断Visual Studio 2013.
以下是我的基本建议:
- 使用Visual Studio或Powershell创建新项目.
- 当您更新旧的csproj并且它不工作时,将这个旧的csproj与您使用Visual Studio或Powershell创建的新的工作csproj进行比较.如果新的工作csproj使用
<NuGetPackageImportStamp>
指令,则将其添加到旧的损坏的csproj中,看看这是否解决了问题;regardless您使用的是哪个Visual Studio版本.
- 如果你的旧CSPROJ仍然无效,请考虑
<TargetFrameworkProfile>
条指令.它存在于你的新工作csproj中吗?考虑删除这个.