明确设置NuGet包中定义的构建目标的顺序

时间:2018-04-09 13:24:36

标签: visual-studio-2017 target octopack

我有一个用于构建Azure功能应用程序的Visual Studio 2017项目。该项目包含(其中包括)两个NuGet包 - Microsoft.NET.Sdk.Functions OctoPack 。有关项目的.csproj文件按此顺序引用包。

Microsoft.NET.Sdk.Functions包中包含目标_GenerateFunctionsPostBuild -

<Target Name="_GenerateFunctionsPostBuild" AfterTargets="Build">...</Target>

OctoPack包中包含目标Octopack -

<Target Name="OctoPack" Condition="$(RunOctoPack)">...</Target>

构建时,_GenerateFunctionsPostBuild目标必须在OctoPack目标之前运行,否则 OctoPack 生成的NuGet包中不会提供所需文件。

由于我无法直接编辑NuGet包,因此无法为AfterTarget="_GenerateFunctionsPostBuild"目标明确说明OctoPack。有什么方法可以强制目标按我要求的顺序运行吗?

1 个答案:

答案 0 :(得分:0)

代替答案,我想出了一个解决方法。我没有使用 OctoPack ,而是在构建完成后手动生成NuGet包。

NuSpec 文件中,我为%Configuration%%Version%添加了几个令牌,以便我可以根据配置选择要打包的文件,显然可以自定义版本。

这就是我正在做的事情 - 显然我在这些行之前制作了$version

$dir = (Get-Location).Path
& D:\nuget\4.4.1\nuget.exe pack $dir\AzureFunction\AzureFunction.nuspec -BasePath $dir\AzureFunction -Properties "Configuration=Release;Version=$version"