13

In einigen meiner csproj Dateien, die ich diese haben aber einige tun sie nicht:Was ist das EnsureNuGetPackageBuildImports-Ziel?

<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> 

genau das, was das ist und warum brauche ich es? Meine anderen Projekte stellen ihre Pakete in Ordnung wieder her ohne es.

Ich verwende VS2013 und NuGet 2.8.

Antwort

4

Es stellt sicher, dass die importierten .props und .targets-Dateien tatsächlich importiert werden. NuGet unterstützt NuGet MSBuild-Unterstützung seit 2.5. EnsureNuGetPackageBuildImports Code wurde im September hinzugefügt, aber ich denke es ist eine 2.8 Änderung. Leider sieht es wie eine nicht rückwärtskompatible Änderung aus. Wir haben einige Entwickler auf 2.7, die jetzt auf 2.8 upgraden müssen. Ich habe EnsureNuGetPackageBuildImports unter Common/MsBuildProjectUtility.cs unter line 11 gefunden.

+0

Ich frage mich, ob "Ctaggart/nugget" -Repository (die Sie verknüpft) wirklich richtig ist. Vielleicht verlinken Sie stattdessen zu "NuGet/NuGet.Client". Es hat auch die [MSBuildProjectSystem.cs-Datei] (https://github.com/NuGet/NuGet.Client/blob/fee9da08b687e9d18073243d46f6d46ad660dd4c/src/NuGet.Clients/NuGet.CommandLine/Common/MSBuildProjectSystem.cs) mit dieser EnsureNuGetPackageBuildImports und es scheinen die offizielle Quelle zu sein. –