显式设置 NuGet 包中定义的构建目标的顺序

Explicitly set the order of build targets defined in NuGet packages

我有一个 Visual Studio 2017 项目,用于构建 Azure Function App。该项目包含(除其他外)两个 NuGet 包 - Microsoft.NET.Sdk.FunctionsOctoPack。这些包由相关项目的 .csproj 文件按此顺序引用。

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

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

OctoPack 包包含目标 Octopack -

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

构建时,_GenerateFunctionsPostBuild目标必须在OctoPack目标之前运行,否则生成的NuGet包中没有需要的文件OctoPack.

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

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

NuSpec 文件中,我为 %Configuration%%Version% 添加了几个标记,以便我可以选择要打包的文件在配置上,显然是自定义版本。

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

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