![](/img/trans.png)
[英]Need to install all packages at once for a solution in vs 2015 using nuget
[英]How to build VS 2015 solution with projects which import targets and props from nuget packages using msbuild 14?
場景
您添加了一個nuget包,該包又將<Import .../>
語句注入您的csproj文件中,該文件引用了包本身中的target或props文件。
在Visual Studio中構建代碼時,此方法運行良好,但在與msbuild構建相同的解決方案時卻失敗了。
根本原因
有幾種。 首先,還原軟件包的邏輯由VS本身在適當的構建之外執行。 我們可以通過導入Nuget.targets
來解決該問題,它會在構建之前運行RestorePackage
目標。 校驗。
但是第二個問題更加嚴重。 從軟件包中導入目標/道具的Import
語句只能在恢復軟件包后才能解決。 意味着恢復軟件包不能成為構建的一部分。 它必須在msbuild得到解決方案生成之前發生。 是的,Visual Studio已經做到了,但是我沒有在Gated Check-In或CI服務器上使用Visual Studio。 我需要它與msbuild一起使用。
可以做什么?
據我了解,我需要能夠運行VS僅在命令行上執行的相同邏輯。 即,在運行msbuild之前,先確定軟件包並還原它們。 但是細節決定成敗。 不能成為第一個遇到此問題的人。
你怎么做呢?
在此博客文章中找到了答案-http: //sedodream.com/2013/06/06/HowToSimplifyShippingBuildUpdatesInANuGetPackage.aspx
在此博客之后,我創建了具有以下內容的before.MySolutionName.sln.targets
文件:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Restore">
<Target Name="Restore" BeforeTargets="Build">
<Exec Command=".nuget\nuget.exe restore $(MSBuildProjectName)" LogStandardErrorAsError="true" />
</Target>
</Project>
現在,解決方案中的所有軟件包都將在構建之前還原。
謝謝,易卜拉欣·哈希米說。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.