2012-04-10 27 views
3

我一直在为我们的网站开发构建脚本。该网站是一个经典的ASP Web应用程序与经典的ASP Web应用程序的文件夹中的一个asp.net网站。MSBuild - 一次执行所有配置转换 - 并转换其他文件

我们有不同版本的global.asa需要替换而不是不同的web配置。我们正在转向持续集成环境,这对我来说仍然是新的。我写了一个构建脚本来执行以下任务。

  1. 清除buildartifacts目录(如果存在)。
  2. 使用任何配置传入的方式构建解决方案文件。这将生成每个项目都在单独文件夹中的输出。
  3. 将文件复制到所需的文件夹结构中。
  4. 使用MSDeploy将结果打包为同步。

我的第一个问题是这样的......

当我运行MSBuild任务是这样的...

<MSBuild Projects="$(SolutionFileName)" 
     Properties="Configuration=$(Configuration);OutDir=%(BuildArtifacts.FullPath)" /> 

它构建的Web应用程序,但不应用任何转换。我会假定MSBuild会自动应用转换。相反,我最终将在包含构建的输出文件夹中包含所有3个配置文件。为什么是这样?我已经做了一些搜索herehere,他们正在使用一个单独的任务来执行转换。如果Visual Studio可以应用转换和Visual Studio使用MSBuild我会认为MSBuild可以应用转换? MSBuild配置不知道吗?另外,如果必须单独执行此操作,那么如果文件夹结构的每个级别的多个文件夹中有多个配置文件,是否可以一次执行所有转换?

我的第二个问题是...作为一个经典的asp网络应用程序,我们不能真正使用配置文件的这部分,因为......以及我不知道经典的asp网络应用程序将如何访问配置文件?所以我们有不同版本的global.asa文件,通常会被手动替换。我想我可以做一些搜索/复制当时我们需要的特定的asa文件,但是有没有办法使用转换来完成这个任务?

回答

0

关于转换的问题......一旦我们用msdeploy整理了部署,我们发现msdeploy实际上会在部署上执行转换。它将转换数据存储在使用该包创建的一个xml文件中。

0

也许这不完全是你所需要的。我正在使用XmlPreprocess tool进行配置文件操作。我为多个环境使用一个映射文件。您可以通过Excel编辑映射文件。这是非常容易使用。

您可以使用Exec任务从MSBuild脚本调用它。