我们有2个Azure Webjobs连接到我们的ASP WebApi应用程序。他们中没有一个正在使用来自另一个的任何依赖关系。但是,发布后,其中一个具有另一个的可执行文件。值得一提的是,这仅在发布时发生。在VS build上一切正常。
这是Azure FTP上文件层次结构的样子
第一个部署文件已按预期发布。这些是文件夹中的可执行文件:
第二个是EmailSender,它具有Deployment中的可执行文件:
奇怪的是,这两个文件夹中都还包含app.publish文件夹,仅包含一个文件和同一文件WebJob.Deployment.exe
:
部署工作正常。不幸的是,Azure无法识别EmailSender作业,而是执行Deployment。目前唯一有效的解决方案是在每次发布时直接从FTP手动删除Deployment的可执行文件。
现在,我们尝试了SO和博客中的一些方法,但没有成功。
编辑:
我确实做到了。它没有解决问题,但是我们没有app.publish
文件夹了。 Here is the link to solution on SO。我不知道为什么要为WebJob.Deployment
应用程序检查“ ClickOnce安全性”选项。
更新:
我用MSBuild
进行了几次测试,发现有些奇怪。如前所述,Visual Studio Publish
可以正常工作-无需部署其他可执行文件。但是,当我运行MSBuild
程序(具有相同的publish profile
和项目配置)时,在Deployment.exe
文件夹中得到了另外的EmailsSender
。这是我运行的命令:
MSBuild RestAPI.Host.csproj /t:Build /p:Configuration="Develop" /p:Platform="AnyCPU" /p:DocumentationFile="RestAPI.Host.XML" /p:DeployOnBuild="true" /p:PublishProfile="fakebuild_develop.pubxml" /p:OutputPath="backend\build\app\\" /p:SolutionDir="backend\\"
有人可以告诉我MSBuild
和VS Publish
有什么区别吗?我在互联网上找不到有用的东西。