我在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功能文件的文件夹结构:
答案 0 :(得分:1)
问题是由scriptFile
文件中的function.json
值不正确引起的。当我从Visual Studio发布Azure功能时,此值已正确设置但是当我构建Azure功能并手动将文件推送到Azure功能应用程序时,scriptFile
值缺少bin
文件夹中的scriptFile
我的函数dll文件的路径。在我的构建过程中,我现在破解{{1}}值以正确设置它。
答案 1 :(得分:0)
我遇到了类似的问题,最终设法找到了根本原因。您可以解决此问题,但将其放置在此处以供其他遇到此问题的人使用。
确保在功能应用程序 中的.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>
希望添加可解决此问题。让我知道这是否有帮助:)
答案 2 :(得分:0)
我遇到了同样的问题,
我删除了bin和obj文件夹并重建了项目 ,然后它可以完美运行。