msbuild - 如何重命名网络部署?

标签 msbuild msdeploy msbuild-4.0

我有一个 Web 应用程序项目:

enter image description here

如您所见,有 3 个 robots.txt 文件 - 每个环境一个。还有 3 个发布配置文件。

现在,对于每个 pubxml,我想选择正确的“robots.xxx.txt”文件并将其重命名为“robots.txt”。理想情况下,我想利用 MSBuild 并将配置保留在每个 pubxml 文件中。

3 个发布配置文件中的每一个都使用 <WebPublishMethod>MSDeploy</WebPublishMethod> .

编辑:

刚试过Richard Szalay answer ,然而无济于事。所有 3 个文件仍被复制到输出目录。这就是我的发布配置文件现在的样子

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <PrecompileBeforePublish>True</PrecompileBeforePublish>
        <EnableUpdateable>True</EnableUpdateable>
        <DebugSymbols>False</DebugSymbols>
        <WDPMergeOption>DonotMerge</WDPMergeOption>
        <ExcludeApp_Data>True</ExcludeApp_Data>
        <publishUrl>C:\Temp\myproject</publishUrl>
        <DeleteExistingFiles>False</DeleteExistingFiles>
    </PropertyGroup>

    <ItemGroup>
        <MsDeployReplaceRules Include="robots">
            <ObjectName>filePath</ObjectName>
            <Match>robots\.debug\.txt</Match>
            <Replace>robots.txt</Replace>
        </MsDeployReplaceRules>
    </ItemGroup>
</Project>

最佳答案

您需要的是替换规则。只需将以下内容添加到您的发布配置文件中:

<ItemGroup>
  <MsDeployReplaceRules Include="robots">
    <ObjectName>filePath</ObjectName>
    <Match>robots\.debug\.txt</Match>
    <Replace>robots.txt</Replace>
  </MsDeployReplaceRules>
</ItemGroup>

如果文件命名约定与您的发布配置文件匹配,您也可以创建一个 Robots.wpp.targets文件在您的 Web 应用程序的根目录中,并使用以下内容:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <MsDeployReplaceRules Include="robots">
      <ObjectName>filePath</ObjectName>
      <Match>robots\.$(PublishProfileName)\.txt</Match>
      <Replace>robots.txt</Replace>
    </MsDeployReplaceRules>
  </ItemGroup>
</Project>   

关于msbuild - 如何重命名网络部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23168484/

相关文章:

msbuild PackageReference.PrivateAssets = 全部似乎不起作用

.net - 当 Visual Studio 编译已经启动时,我可以停止它吗?

powershell - 从MsDeploy运行时,PowerShell 2.0在使用c/进行部署之前挂起

c# - 如何在执行 powershell 脚本的 msdeploy post sync 命令中转义引号?

msbuild - 我的项目使用 MSBuild 4 构建,但不是使用 MSBuild 3.5,即使我的目标是相同版本的 .NET Framework (3.5)?

msbuild - 错误 MSB4064 : The "OverwriteReadOnlyFiles" parameter is not supported by the "Copy" task

azure - TFS 构建服务生成一个包,其中引用了错误版本的 msshrtmi(应该是 1.7,最终引用了 1.8)

c# - Msbuild v15 无法解析 nuspec 文件的元数据变量

TFS 构建部署

powershell - 如何衡量构建执行时间?