7

我将 SlowCheetah 下载到旧的 .Net 3.5 Web 表单应用程序中,以便将转换添加到 web.config。

过去,我曾将 SlowCheetah 与 Windows 服务和控制台应用程序一起使用,成功地转换了 app.config。在这些情况下,配置会被转换并作为 ApplicationName.exe.config 放置在 bin 中。

但是,对于这个 Web 表单应用程序,配置文件永远不会在 bin 中结束,因为 Web 表单站点是通过将 .dll 放在 bin 中构建的,并且 IIS 指向根目录来运行站点。因此,web.config 没有包含在构建过​​程中并打包在 bin 中,而是单独留在根位置。

没有对根目录中的 web.config 应用任何转换,这是一件好事,因为根目录中的 web.config 位于源代码控制中,并且是我们对其执行转换的文件。

我很乐意将 web.config 包含在构建中,以便 slowCheetah 对其进行转换,然后将其放入 bin 中。然后,我们必须手动将其从 bin 中取出并将其放回服务器的根级别,但进行转换是值得的。

有谁知道如何让转换针对我的 web.config 运行或将其包含在构建过​​程中,以便 slowCheetah 可以发挥它的魔力?

谢谢!

更新

我修改了 web.config 的属性,它现在包含在构建中,但是,转换仍未应用于它。

构建操作:嵌入式资源

复制到输出导演:总是复制

4

2 回答 2

6

解决方案

我将源代码控制中的 Web.config 重命名为 Web.template.config 并添加了转换 Web.template.Debug.config 和 Web.template.Release.config

接下来,卸载项目文件并编辑 .csproj xml 添加以下元素

这会在根目录中创建一个新的 Web.config 文件。哇!

<PropertyGroup>
  <PrepareForRunDependsOn>
    $(PrepareForRunDependsOn);
    WebConfigTransform;
  </PrepareForRunDependsOn>
</PropertyGroup>
<Target Name="WebConfigTransform">
  <Message Text="Configuration: $(Configuration): Web.template.$(Configuration).config" />
  <TransformXml Source="Web.template.config" 
                Transform="Web.template.$(Configuration).config" 
                Destination="Web.config" />
</Target>
于 2013-04-26T14:58:51.943 回答
1

找到了一个更好的解决方案 - 一个无需将文件重命名为.template.config的解决方案。

将以下内容粘贴到您的 Web 表单 .csproj 文件中。

  <Target Name="BeforeBuild">
    <Delete Files="$(TEMP)\Web.TEMP.config" />
    <Copy SourceFiles="Web.config" DestinationFiles="$(TEMP)\Web.TEMP.config" />
    <TransformXml 
      Source="$(TEMP)\Web.TEMP.config"
      Transform="Web.$(Configuration).config"
      Destination="Web.config" />
  </Target>
于 2013-06-25T04:10:21.517 回答