SlowCheetah Azure веб-роль не преобразована

Я использую SlowCheetah 2.5.10.6 в своем решении Visual Studio 2013, в котором я хочу создать пакет веб-роли для развертывания. Я использую Azure Tools 2.3. Мои преобразования web.config по умолчанию работают правильно. Однако преобразования SlowCheetah не работают. Как-то это должно работать: медленный выпуск гепарда 5 В моем окне вывода я вижу следующее:

1>Task "SlowCheetah.Xdt.TransformXml"
1>  Transfroming source file: D:\web\Project\src\Project.Web\App_Config\OTAP\connectionStrings.config
1>  Applying Transform File: App_Config\OTAP\connectionStrings.O.config
1>  Output File: bin\App_Config\OTAP\connectionStrings.config
1>Done executing task "SlowCheetah.Xdt.TransformXml".

В моей папке bin я вижу правильно преобразованный файл.

Я также вижу следующую строку в моем выводе:

3>  Task "Message"
3>      TransformedWebFiles = App_Config\OTAP\connectionStrings.config, DestinationRelativePath=App_Config\OTAP\connectionStrings.config, Exclude=False, FromTarget=CollectFilesFromContent, Category=Run, ProjectFileType=Default

Но когда пакет создан, используется оригинальный файл

3>Target "CopyWebRoleFiles" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Windows Azure Tools\2.3\Microsoft.WindowsAzure.targets" from project "D:\web\Project\src\Project\Project.ccproj" (target "CopyRoleFiles" depends on it):
3>  Task "Message"
3>      CurrentRoleWebFiles=D:\web\Project\src\Project.Web\App_Config\OTAP\appSettings.config -> App_Config\OTAP\appSettings.config
3>  Task "Message"
3>      CurrentRoleWebFiles=D:\web\Project\src\Project.Web\App_Config\OTAP\connectionStrings.config -> App_Config\OTAP\connectionStrings.config

Таким образом, моя базовая конфигурация используется в пакете, и я хочу использовать connectionStrings.*. Config. Кто-нибудь знает, что я здесь делаю не так?

1 ответ

Решение

Я исправил проблему с помощью следующего скрипта MSBuild:

<Target Name="DeploySlowCheetahTransforms" AfterTargets="CopyWebRoleFiles" Condition="'@(WebRoleReferences)' != ''">
    <PropertyGroup>
      <IntermediateWebOutputPath>%(WebRoleReferences.OutputDir)</IntermediateWebOutputPath>
    </PropertyGroup>
    <ItemGroup>
        <TransformedFiles Include="$(WebTargetDir)\**\*.config" Exclude="$(WebTargetDir)\**\*.dll.config;$(WebTargetDir)\**\web*.config" />
    </ItemGroup>
    <Copy SourceFiles="@(TransformedFiles)" DestinationFiles="@(TransformedFiles->'$(IntermediateWebOutputPath)\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>

Этот сценарий необходимо добавить в файл ccproj. WebRoleReferences а также WebTargetDir переменные создаются в Microsoft.WindowsAzure.targets. Этот сценарий получает все преобразованные файлы конфигурации из OutputPath вашего файла csproj и копирует их в OutputDir, который используется для создания пакета Azure WebRole.

Другие вопросы по тегам