Против установки целевого проекта приложение.конфигурация внутри.objx86Release


Я создал преобразование app.config для моего проекта WinForms, используя решение Дэна Абрамоваздесь . Работает отлично, и конфигурационный файл преобразуется и присутствует в правильной папке obj.

Когда я смотрю на выходные данные для основного вывода моего приложения, оно получает app.config из каталога проекта вместо соответствующей папки obj, как и все остальное...большая оплошность, на мой взгляд, со стороны MSFT. Очевидно, что они не имели в виду преобразования для всех конфигурационных файлов типы.

Итак, как мне получить первичный вывод моего основного проекта для вывода файла конфигурации из папки obj на основе конфигурации сборки?

2 2

2 ответа:

Вы пробовали использовать SlowCheetah (расширение VS), которое позволяет преобразовать приложение.настраивается так же, как и web.конфиг работает. Также ваш сценарий для преобразования приложения.поддерживается конфигурация для проекта установки.

Я нашел работу, которую искал здесь. Прокрутите страницу вниз и посмотрите ответ какоскина. В сочетании с решением Дэна Абрамовая смог получить результаты, которые искал. Вот код MSBuild, который я использовал:

  <Target Name="AfterBuild" Condition="exists('app.$(Configuration).config')">
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
<!-- Force build process to use the transformed configuration file from now on. -->
<ItemGroup>
  <AppConfigWithTargetPath Remove="app.config" />
  <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
    <TargetPath>$(TargetFileName).config</TargetPath>
  </AppConfigWithTargetPath>
</ItemGroup>
<TransformXml Source="App.config" Transform="app.$(Configuration).config" Destination="App.Transformed.config" />

Раздел <ItemGroup> удалит приложение.конфигурационный файл из соответствующей папки obj\ и заменить его преобразованным конфигурационным файлом, который не нужен, Но я оставил его там в любом случае.

Надеюсь, это поможет другим как хорошо!