簡體   English   中英

如何使用msbuild 14從nuget包中導入目標和道具的項目構建VS 2015解決方案?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM