13

在我的一些文件的csproj我有這個,但一些不要:EnsureNuGetPackageBuildImports目標是什麼?

<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

它確保導入的.props和.targets文件確實被導入。自從2.5以來,NuGet已經支持NuGet MSBuild支持。 EnsureNuGetPackageBuildImports代碼是在9月份添加的,但我認爲這是一個2.8的變化。不幸的是,它看起來像一個非向後兼容的變化。我們有一些2.7的開發者現在需要升級到2.8。我在line 11上找到了CommonNode/MsBuildProjectUtility.cs中的EnsureNuGetPackageBuildImports。

+0

我想知道「ctaggart/nuget」存儲庫(你鏈接的)是否真的準確。也許你會鏈接到「NuGet/NuGet.Client」。它還有[MSBuildProjectSystem.cs文件](https://github.com/NuGet/NuGet.Client/blob/fee9da08b687e9d18073243d46f6d46ad660dd4c/src/NuGet.Clients/NuGet.CommandLine/Common/MSBuildProjectSystem.cs)與EnsureNuGetPackageBuildImports和它似乎是官方的nuget來源。 –