如何为不同的构建配置部署不同版本的文件?

时间:2015-06-07 23:06:53

标签: visual-studio configuration build robots.txt

特别是,我想为不同的构建配置部署不同的robots.txt文件。我们有一个可在网上公开使用的暂存环境,但我们不允许该环境的robots.txt文件中的所有内容,因此它不会被索引并与我们的生产站点竞争。

目前,我们只是在每次部署时手动将生产中的robots.txt文件的先前版本复制到新文件夹中。有没有办法将两个版本放入项目并根据构建配置部署特定版本?或者有更正确的方法来解决这个问题吗?

3 个答案:

答案 0 :(得分:5)

我使用预构建事件来执行此操作。这里有一篇非常好的文章: http://www.aaroncoleman.net/post/2011/10/28/Simple-ASPNET-robotstxt-transform-like-XDT.aspx

总之,在项目属性中的预构建事件中使用以下脚本。

copy $(ProjectDir)Content\robots_txt\robots.$(ConfigurationName).txt $(ProjectDir)robots.txt /Y

然后您可以存储根据构建配置命名的不同文件版本,脚本会将内容复制到新文件中。

答案 1 :(得分:2)

我遇到了同样的问题,我在www.asp.net上发现了这篇文章:http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-extra-files

由于您的情况类似于我的情况,我不得不通过在ExtraFiles文件夹下为每个构建配置文件创建单独的子文件夹来调整文章中的技术。然后更新每个.pubxml文件以引用该_CustomFiles节点中的每个构建配置文件:

<_CustomFiles Include="..\ExtraFiles\BuildProfile1\**\*" />

答案 2 :(得分:0)

对于我们这些习惯于XML web.config转换的人来说,简单文件的解决方案,比如robots.txt,可能就像将所有相关信息放入web.config应用程序设置和应用程序一样简单启动,只需生成您需要的确切文件。

例如,在我们的web.config中,我们可能有这样的行:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
      <add key="robots.txt" value="
User-agent: *
Disallow: /
" />
    </appSettings>
</configuration>

在我们的转换XML文件(web.stage.config,web.prod.config)中,我们当然会转换该设置的值。 最后,在我们的代码中,我们可以生成包含已转换内容的文件:

static void Main(string[] args)
{
    var fileName = "robots.txt";

    var fileContent = ConfigurationManager.AppSettings[fileName];
    File.WriteAllText(fileName, fileContent);
}