我有一个 C# .NET v4.6.1 编译的 Azure 函数,我正在使用Microsoft.NET.Sdk.Functions并使用我常用的 CI/CD 管道部署它。
也就是说,创建 OctoPack 的 TeamCity MSBuild 构建步骤(因为我已经安装了OctoPack 3.6.3 NuGet 包。然后我将生成的*.nupkg文件发布到 Octopus 并创建一个版本。
这就是我执行所有 Azure 应用程序服务的方式,但是正如这篇文章中很好地描述的那样,编译的 Azure Functions 在发布时会创建一些额外的文件/文件夹来描述函数的入口点。
我可以看到(在 TeamCity 构建日志中)这些额外的文件/文件夹是由 MSBuild (15.3.409.57025) 创建的,但只有在它准备好 OctoPack 之后。这意味着我的 OctoPack 工件不包含带有function.json文件和functionsSdk.out的必要功能特定文件夹。
我通过执行额外的 TeamCity NuGet Pack Build Step 来再次构建 OctoPack 设法解决了这个问题。我还必须在项目根目录中创建一个*.nuspec文件,我告诉 NuGet Pack 包含所有内容(见下文),因为仅使用*.csproj文件也会忽略额外的文件夹/文件。
<files>
<file src="bin\Release\net461\**\*.*" />
</files>
这是因为它在 MSBuild 步骤之后运行并且存在额外的文件夹/文件。当被添加到未来的项目中时,它也将足够强大以支持其他功能。
这个额外的步骤和 *.nuspec 文件似乎没有必要。谁能看到我哪里出错了,为什么 MSBuild 似乎有 Publish 和 OctoPak 的顺序错误?