我有一个包含以下内容的Microsoft Azure解决方案:
我已将配置转换应用于两个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。
答案 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" />