Kudu sync 不会将卫星程序集复制到 Web 作业目录

Kudu sync does not copy satellite assemblies to web job directory

我正在使用 Kudu 从 Git 部署到 Azure Webapp。今天我发现包含翻译(从标准 resx 文件生成)的附属程序集没有复制到 WebJob 目标目录。例如。 de\MyLib.resources.dll 文件存在于 Web 应用程序的 bin 目录中,但不在 Web 作业目录中,即使 Web 作业可执行文件引用 MyLib.

因此,我的 Web 作业没有可用的必要资源,这是一个问题,因为我正在尝试从该作业发送本地化的电子邮件。

这是一个错误,还是我缺少指示 Kudu 部署附属程序集的配置选项?

编辑:我还创建了一个 issue on the kudu sync github site

该问题也被报告为 Github issue by someone else。显然,问题出在 Microsoft.Web.WebJobs.Publish 包中的 MSBuild 脚本中。不幸的是,@bradygaster 描述的修复程序仍未发布。

临时解决方案

我创建了 Microsoft.Web.WebJobs.Publish 1.3.0 的补丁版本,它与那个包的区别仅在于 fix described by bradygaster.

修补后的 nuget 包具有 ID Microsoft.Web.WebJobs.Publish.SatelliteAssemblyFix

希望微软尽快修复原包并发布更新

解决方法

只有当附属程序集作为 Web 应用程序的一部分构建时,此解决方法才有效。

在 Kudu 同步完成后使用 XCOPY 命令复制附属程序集:

xcopy   
   "%DEPLOYMENT_TARGET%\bin\*" 
   "%DEPLOYMENT_TARGET%\app_data\jobs\continuous\mywebjob\" 
   /Y /E

(为了便于阅读而添加了换行符)。