我有一个用于构建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
。有什么方法可以强制目标按我要求的顺序运行吗?
答案 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"