在 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.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>
然后当您完成发布步骤时,您将在发布文件夹中找到这些文件。
希望对您有所帮助。
我使用的是 Azure Dev Ops Server,我想 运行 构建时的发布转换,但也有可能 运行 每个管道目标的额外转换。在我的例子中更改 SessionDb 连接字符串
我在构建参数中添加了 /p:MarkWebConfigAssistFilesAsExclude=false
我将 web.Prod.config
设置为 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
我在进行转换时仍然收到 NullReference 异常。我不得不删除
<compilation xdt:Transform="RemoveAttributes(debug)" />
来自产品配置转换,因为 属性 已随发布配置转换一起删除。
默认情况下,当使用 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.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>
然后当您完成发布步骤时,您将在发布文件夹中找到这些文件。
希望对您有所帮助。
我使用的是 Azure Dev Ops Server,我想 运行 构建时的发布转换,但也有可能 运行 每个管道目标的额外转换。在我的例子中更改 SessionDb 连接字符串
我在构建参数中添加了 /p:MarkWebConfigAssistFilesAsExclude=false
我将 web.Prod.config
设置为 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
我在进行转换时仍然收到 NullReference 异常。我不得不删除
<compilation xdt:Transform="RemoveAttributes(debug)" />
来自产品配置转换,因为 属性 已随发布配置转换一起删除。