在 Web 部署输出中包含 web.release.config

Include web.release.config in Web Deploy output

默认情况下,当使用 MSBuild/Visual Studio 发布 Web 项目时,会应用配置转换。

我想在输出中包含配置转换。

输入

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

默认输出

web.config

期望输出

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

使用 Visual Studio(例如右键单击、属性)

将文件 Build Action 更新为 Content

发布任务仍会转换文件,因此我们需要告诉 MSBuild,我们不想在发布时转换这些文件。

这可以通过将以下参数传递到 MSBuild 中来实现:

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

如果您在 Visual Studio 内工作,您可以通过将这些属性添加到 folder publish profile PublishProfile.xml

来测试此行为
<!-- Disable Web.config Transforms -->
<ProfileTransformWebConfigEnabled>false</ProfileTransformWebConfigEnabled>
<MarkWebConfigAssistFilesAsExclude>false</MarkWebConfigAssistFilesAsExclude>

Include web.release.config in Web Deploy output

默认,发布网站时,VS不打包web.debug.configweb.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>

然后当您完成发布步骤时,您将在发布文件夹中找到这些文件。

希望对您有所帮助。

我使用的是 Azure Dev Ops Server,我想 运行 构建时的发布转换,但也有可能 运行 每个管道目标的额外转换。在我的例子中更改 SessionDb 连接字符串

我在构建参数中添加了 /p:MarkWebConfigAssistFilesAsExclude=false

我将 web.Prod.config 设置为 <CopyToOutputDirectory>Always</CopyToOutputDirectory>

我在进行转换时仍然收到 NullReference 异常。我不得不删除

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

来自产品配置转换,因为 属性 已随发布配置转换一起删除。