То, как использовать новую конфигурацию VS 2010 года, преобразовывает, и примените их к другим .config файлам?

У меня есть установка, которую некоторая конфигурация преобразовывает в мой web.config для моего connectionStrings, и т.д. Но я выделил некоторые области своего web.config в отдельные файлы, исключая), appSettings.config.

Как я могу настроить Visual Studio и MSBuild для выполнения преобразований конфигурации на этих дополнительных файлах конфигурации?

Я уже следовал за подходом web.config для связи файлов вместе в моем файле проекта веб-приложения, но преобразования автоматически не применяются.

<ItemGroup>
    <Content Include="appSettings.Debug.config">
        <DependentUpon>appSettings.config</DependentUpon>
    </Content>
</ItemGroup>
10
задан Sayed Ibrahim Hashimi 11 February 2012 в 20:04
поделиться

1 ответ

По умолчанию целевой объект, управляющий преобразованием ( TransformWebConfig ), работает только с файлом web.config .


Чтобы он работал с вашим файлом appSettings.config , вам необходимо:

  • Установить Действие сборки вашего файла на Контент
  • Вызов целевой объект MSBuild TransformWebConfig с ProjectConfigFileName = appSettings.config и Configuration = $ (Configuration) .

Чтобы вызвать цель MSBuild TransformWebConfig для appSettings.config сразу после преобразования файлов web.config , вам нужно добавить это в конец вашего файл проекта:

<PropertyGroup>
  <!-- Name of your custom config file -->
  <ConfigFileName>appSettings.config</ConfigFileName>
</PropertyGroup>

<PropertyGroup>
  <!-- 
      This property is used to handle circular dependency between
      TransformWebConfig and our custom target TransformAppConfig
  -->
  <FirstRun Condition="$(FirstRun) == ''">true</FirstRun>
</PropertyGroup>

<!-- This target will be called one time after a call to TransformWebConfig -->
<Target Name="TransformAppConfig" 
        AfterTargets="TransformWebConfig"
        Condition="$(FirstRun) == 'true'">

  <MSBuild Projects="$(MSBuildProjectFile)"
           Targets="TransformWebConfig"
           Properties="ProjectConfigFileName=$(ConfigFileName);
                       Configuration=$(Configuration);
                       FirstRun=false"/>
</Target>

<!-- 
    This target will be called one time before PreAutoParameterizationWebConfigConnectionStrings 
    to add $(ConfigFileName) to autoparameterization step
-->
<Target Name="AddToAutoParameterizationStep" 
        BeforeTargets="PreAutoParameterizationWebConfigConnectionStrings">
  <ItemGroup>
    <_WebConfigsToAutoParmeterizeCS Include="@(FilesForPackagingFromProject)"
                           Condition="('%(FilesForPackagingFromProject.Filename)%(FilesForPackagingFromProject.Extension)'=='$(ConfigFileName)') And !%(FilesForPackagingFromProject.Exclude)">
      <TransformOriginalFile>$(AutoParameterizationWebConfigConnectionStringsLocation)\original\%(DestinationRelativePath)</TransformOriginalFile>
      <TransformOutputFile>$(AutoParameterizationWebConfigConnectionStringsLocation)\transformed\%(DestinationRelativePath)</TransformOutputFile>
      <TransformScope>$(_PackageTempDir)\%(DestinationRelativePath)</TransformScope>
    </_WebConfigsToAutoParmeterizeCS>
    <_WebConfigsToAutoParmeterizeCSOuputFiles Include="@(_WebConfigsToAutoParmeterizeCS->'%(TransformOutputFile)')">
    </_WebConfigsToAutoParmeterizeCSOuputFiles>
  </ItemGroup>   
</Target>
11
ответ дан 3 December 2019 в 20:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: