Включить web.release.config в выходные данные веб-развертывания

По умолчанию при публикации веб-проекта с помощью MSBuild/Visual Studio применяются преобразования конфигурации.

Я хотел бы включить преобразования конфигурации в вывод.

Ввод

web.config  
web.Debug.config   
web.Release.config  

Вывод по умолчанию

web.config

Желаемый результат

web.config  
web.Debug.config   
web.Release.config  

person uniquelau    schedule 09.01.2020    source источник
comment
Я думаю, вы можете обратиться к этот документ, чтобы добавить пользовательскую цель в Folderprofile.pubxml для добавления дополнительных файлов.   -  person Mr Qian    schedule 10.01.2020
comment
@PerryQian-MSFT, исправление сработало, спасибо. Изучая это, я также рассматривал возможность обработки этого с помощью параметров в MSBuild WebDeploy, но это, похоже, не имело никакого эффекта - я разместил этот пример ниже для справки - однако это не имело никакого эффекта.   -  person uniquelau    schedule 14.01.2020


Ответы (3)


Включить web.release.config в выходные данные веб-развертывания

По умолчанию при публикации веб-сайта VS не упаковывает web.debug.config и web.release.config, а только web.config.

Чтобы достичь того, чего вы хотите, вы можете добавить пользовательскую цель в publishprofile.pubxml, чтобы включить эти дополнительные файлы.

Пожалуйста, попробуйте это:

<Target Name="CustomCollectFiles">
          <ItemGroup>
            <AdditionFiles Include="xxxxxxxxxxx\Web.Debug.config;xxxxxxxxx\Web.Release.config">
            </AdditionFiles>
            <FilesForPackagingFromProject Include="%(AdditionFiles.Identity)">
               <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
            </FilesForPackagingFromProject>
          </ItemGroup>
     </Target>
     <PropertyGroup>
          <CopyAllFilesToSingleFolderForPackageDependsOn>
               CustomCollectFiles;
               $(CopyAllFilesToSingleFolderForPackageDependsOn);
          </CopyAllFilesToSingleFolderForPackageDependsOn>

          <CopyAllFilesToSingleFolderForMsdeployDependsOn>
               CustomCollectFiles;
               $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
          </CopyAllFilesToSingleFolderForMsdeployDependsOn>
     </PropertyGroup>

И затем вы найдете эти файлы в папке публикации, когда закончите шаг публикации.

Надеюсь, это поможет вам.

person Mr Qian    schedule 10.01.2020

Обновите файлы Build Action до Content с помощью Visual Studio (например, щелчок правой кнопкой мыши, свойства).

введите здесь описание изображения

Задачи публикации по-прежнему будут преобразовывать файлы, поэтому нам нужно сообщить MSBuild, что мы не хотим преобразовывать эти файлы при публикации.

Этого можно добиться, передав в MSBuild следующие параметры:

/p:ProfileTransformWebConfigEnabled=false /p:MarkWebConfigAssistFilesAsExclude=false

Если вы работаете в Visual Studio, вы проверяете это поведение, добавляя эти свойства в папку профиль публикации папки PublishProfile.xml

<!-- Disable Web.config Transforms -->
<ProfileTransformWebConfigEnabled>false</ProfileTransformWebConfigEnabled>
<MarkWebConfigAssistFilesAsExclude>false</MarkWebConfigAssistFilesAsExclude>
person uniquelau    schedule 09.01.2020
comment
Похоже, это не работает в более новых версиях MSBuild/Visual Studio. - person uniquelau; 14.01.2020
comment
Brilliant, кажется, сработал для меня, используя msbuild при выполнении этих двух упомянутых значений /p. Большое спасибо - person Andrew; 14.04.2021

Я использовал Azure Dev Ops Server и хотел запустить преобразование выпуска при сборке, а также иметь возможность запускать дополнительные преобразования для каждого целевого объекта конвейера. В моем случае изменить строку подключения SessionDb

Я добавил /p:MarkWebConfigAssistFilesAsExclude=false в параметры сборки

Я установил web.Prod.config на <CopyToOutputDirectory>Always</CopyToOutputDirectory>

Я все еще получал исключение NullReference при выполнении преобразования. мне пришлось удалить

<compilation xdt:Transform="RemoveAttributes(debug)" />

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

person Richard Hubley    schedule 01.12.2020