在3.5 Web窗体应用程序中使用SlowCheetah配置转换Web.config

时间:2013-04-25 21:47:54

标签: msbuild webforms asp.net-3.5 slowcheetah

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

构建操作:嵌入式资源

复制到输出控制器:始终复制

2 个答案:

答案 0 :(得分:5)

<强>解决方案

我将源代码控制中的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>

答案 1 :(得分: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>