通過將BuildPackage
屬性爲您的項目文件是記錄/透明(見下文)創建你的包,但的NuGet隊no longer recommends使用添加對屬性的支持機制,「MSBuild的集成包還原」:
在NuGet 2.7之前,MSBuild集成包恢復方法是 使用和推廣。儘管這種方法仍然可用,但NuGet 團隊建議使用「自動軟件包還原」和命令行代替。
相應地,在3.0版的NuGet Visual Studio擴展中,「啓用NuGet包恢復」上下文菜單項will be removed。
正如您發現的那樣,BuildPackage
是在您執行「啓用NuGet包恢復」時,Visual Studio添加到您的解決方案中的.nuget\NuGet.targets
MSBuild文件中定義的目標。
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
Condition=" '$(OS)' != 'Windows_NT' " />
<Exec Command="$(BuildCommand)"
LogStandardErrorAsError="true"
Condition=" '$(OS)' == 'Windows_NT' " />
</Target>
Exec
任務調用cmd.exe; $(BuildCommand)
是在同一文件中定義的屬性:您的解決方案目錄中
<BuildCommand>
$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols
</BuildCommand>
$(NuGetCommand)
將評估爲.nuget\NuGet.exe
。
因此,將來雖然自動添加這些msbuild節點將不被支持,但您可以自己將它們添加到項目中或使用其他方法來執行完全相同的(完全支持的)命令行nuget pack
。
這不是一個答案,更像是問題的延伸。 –
你是對的,我應該添加它作爲評論。我羞於垂頭。 – user3723367