Azure中多个辅助角色的App.config转换

时间:2015-01-27 06:47:44

标签: azure configuration msbuild

我有一个包含以下内容的Microsoft Azure解决方案:

  • WorkerRole1
  • WorkerRole2
  • Webrole

我已将配置转换应用于两个workerroles的app.config。

基于以下问题的答案:Azure Worker Role Config File Transformations我能够让1个工作人员(Worker2)将app.config转换为已发布的包。 但是,该解决方案不适用于这两种角色。 有没有办法包括工作人员在包中改造app.configs?

这是我的msbuild代码:

  <Target Name="CopyWorkerRoleConfigurations1" AfterTargets="CollectWorkerRoleFiles" Condition="Exists('$(WorkerTargetDir)\Worker1.dll.config')">
    <Copy SourceFiles="$(WorkerTargetDir)\Worker1.dll.config" DestinationFolder="$(IntermediateOutputPath)Worker1" OverwriteReadOnlyFiles="true" />
  </Target>
  <Target Name="CopyWorkerRoleConfigurations2" AfterTargets="CollectWorkerRoleFiles" Condition="Exists('$(WorkerTargetDir)\Worker2.dll.config')">
    <Copy SourceFiles="$(WorkerTargetDir)\Worker2.dll.config" DestinationFolder="$(IntermediateOutputPath)Worker2" OverwriteReadOnlyFiles="true" />
  </Target>

我还尝试使用目标 AfterPackageComputeService CopyWorkerRoleFiles AfterAddRoleContent 。所有都具有相同的结果:1个工作程序包含其配置转换而另一个不包含。

当我在本地运行时,两个worker app.config都被转换。 我的猜测是,对于两个workerroles,目标都是激活的,并且WorkerTargetDir变量总是设置为最后发布的workerrole。

1 个答案:

答案 0 :(得分:1)

尝试使用相同的目标以这种方式更改代码:

<Target Name="CopyWorkerRoleConfigurations1" AfterTargets="CollectWorkerRoleFiles" >
<Copy SourceFiles="$(WorkerTargetDir)\Worker1.dll.config" DestinationFolder="$(IntermediateOutputPath)Worker1" OverwriteReadOnlyFiles="true" />
<Copy SourceFiles="$(WorkerTargetDir)\Worker2.dll.config" DestinationFolder="$(IntermediateOutputPath)Worker2" OverwriteReadOnlyFiles="true" />