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