21

在我的一些 csproj 文件中,我有这个但有些没有:

  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>

这到底是什么,我为什么需要它?我的其他项目在没有它的情况下恢复他们的包就好了。

我正在使用 VS2013 和 NuGet 2.8。

4

1 回答 1

8

它确保导入的 .props 和 .targets 文件确实被导入。NuGet 从2.5开始支持 NuGet MSBuild 。EnsureNuGetPackageBuildImports 代码是在 9 月添加的,但我认为这是 2.8 的更改。不幸的是,它看起来像一个非向后兼容的变化。我们有一些 2.7 的开发人员现在需要升级到 2.8。我在第 11 行的 Common/ MsBuildProjectUtility.cs中找到了 EnsureNuGetPackageBuildImports 。

于 2014-03-03T19:29:30.457 回答