【问题标题】:Using SlowCheetah Config Transforms on Web.config in a 3.5 Web Forms app在 3.5 Web 窗体应用程序中的 Web.config 上使用 SlowCheetah 配置转换
【发布时间】:2013-04-19 23:17:38
【问题描述】:

我将 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 的属性,现在它已包含在构建中,但是,转换仍未应用于它。

构建操作:嵌入式资源

复制到输出主管:始终复制

【问题讨论】:

    标签: msbuild webforms asp.net-3.5 slowcheetah


    【解决方案1】:

    解决方案

    我将源代码管理中的 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>
    

    【讨论】:

      【解决方案2】:

      找到了一个更好的解决方案 - 无需将文件重命名为 .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>
      

      【讨论】:

      • 这里的问题是您创建了某种循环引用。假设您有一个插入元素的转换。第一次运行时,它将采用 web.config 中的内容并插入新元素,然后在第二次运行转换时,您将插入重复的元素。另外,请记住,如果您的 web.config 在源代码管理中,您是否希望它一直在更改?
      • 同意循环问题。虽然我们只使用“SetAttribute”转换,但它对我们很有用。
      • 将 Web.config 置于源代码控制之下对我们来说很重要。因此解决方案。但我同意您的解决方案更可取。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2012-12-28
      • 2013-09-03
      相关资源
      最近更新 更多