3

我一直在为我们拥有的网站编写构建脚本。该网站是一个经典的 asp web 应用程序,在经典的 asp web 应用程序的文件夹中包含一个 asp.net 网站。

我们有不同版本的 global.asa 需要替换,而不是不同的 Web 配置。我们正在迁移到持续集成环境中,其中很多内容对我来说仍然是新事物。我编写了一个执行以下任务的构建脚本。

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

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

当我像这样运行 MSBuild 任务时......

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

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

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

4

2 回答 2

0

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

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

于 2012-04-11T04:17:33.673 回答
0

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

于 2012-05-16T14:10:59.097 回答