我在Visual Studio 2017中创建了一个Azure Function应用程序,可以使用Visual Studio发布功能将其发布到Azure而没有任何问题(右键单击项目,然后选择发布)。
由于从Visual Studio的开发人员实例部署不是理想的持续集成策略,我创建了TeamCity和Octopus的部署管道,其中TeamCity构建Azure功能应用程序,Octopus使用WAWSDeploy应用程序将Azure功能文件部署到Azure。部署工作正常,当我通过WAWSDeploy部署时查看Azure功能文件时,文件与我从Visual Studio发布Azure功能应用程序时的文件完全相同。
但是当我从WAWSDeploy部署(通过查看Azure功能应用程序日志)时,我得到错误No job functions found. Try making your job classes and methods public.
和Invalid script file name configuration. The 'scriptFile' property is set to a file that does not exist.
。这看起来似乎不是WAWSDeploy问题,但看起来Visual Studio发布功能正在做我想念的事情。有任何想法吗?
Azure功能文件的文件夹结构:
问题是由scriptFile
文件中的function.json
值不正确引起的。当我从Visual Studio发布Azure功能时,此值设置正确但是当我构建Azure功能并手动将文件推送到Azure功能应用程序时,scriptFile
值缺少我的函数dll文件路径中的bin
文件夹。在我的构建过程中,我现在破解scriptFile
值以正确设置它。
我遇到了类似的问题,最终找到了根本原因。你可能已经解决了这个问题,但是把它放在这里面对这个问题的其他人。
确保在功能应用程序的.csproj中包含以下元素块
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
当我从项目中排除host.json然后再次创建一个(在确认需要肯定之后)时,我遇到了这个问题。
有效的.csproj应该看起来像这样
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
...
...
...
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
希望添加它可以解决这个问题。如果这有帮助,请告诉我:)