我有一个C# .NET v4.6.1编译的Azure函数,我使用Microsoft.NET.Sdk.Functions并使用我通常的CI/CD管道来部署它。
这就是TeamCity MSBuild构建步骤来创建OctoPack (因为我已经安装了OctoPack 3.6.3 NuGet包 )。然后,我将生成的*.nupkg文件发布到Octopus并创建一个发行版。
这就是我所做的所有Azure的方法,然而,正如在这个职位中很好地描述的那样,编译的Azure函数在发布时会创建一些额外的文件/文件夹来描述函数的入口点。
我可以看到(在TeamCity构建日志中),这些额外的文件/文件夹是由MSBuild (15.3.409.57025)创建的,但前提是它已经准备好了OctoPack。这意味着我的OctoPack工件不包含function.json文件或functionsSdk.out所需的特定于函数的文件夹。
通过执行额外的TeamCity NuGet包构建步骤再次构建OctoPack,我成功地解决了这个问题。我还必须在项目根目录中创建一个*.nuspec文件,在这里我告诉NuGet包包含所有内容(参见下面),因为仅使用*.csproj文件也忽略了额外的文件夹/文件。
<files>
<file src="bin\Release\net461\**\*.*" />
</files>这是因为它在MSBuild步骤之后运行,并且存在额外的文件夹/文件。它还将足够强大,以支持其他功能时,增加到项目前进。
这一额外步骤和*.nuspec文件的需要似乎是不必要的。有人能看到我哪里出错了吗?为什么MSBuild的发布顺序和OctoPak顺序都错了?
发布于 2018-02-05 20:14:05
如果该部分存在,OctoPack默认不会尝试将任何额外的文件自动添加到您的包中,因此您需要明确说明要包含哪些文件。您可以使用/p:OctoPackEnforceAddingFiles=true重写此行为,该行为将指示OctoPack使用其约定和您节定义的文件的组合打包文件。 https://octopus.com/docs/packaging-applications/creating-packages/nuget-packages/using-octopack
.csproj文件。请检查一下。
也许,在合并过程中,这两行被重新排序:
首先应该有Microsoft.CSharp.targets。秩序很重要。发布于 2018-12-18 20:25:20
解决办法:发布后运行OctoPack
<Target Name="SetRunOctoPack">
<PropertyGroup>
<RunOctoPack>true</RunOctoPack>
</PropertyGroup>
</Target>
<Target Name="AfterPublish" DependsOnTargets="SetRunOctoPack">
<CallTarget Targets="OctoPack"/>
</Target>https://stackoverflow.com/questions/48563146
复制相似问题