首页 文章

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

提问于
浏览
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的属性,它现在包含在构建中,但是,转换仍未应用于它 . 构建操作:嵌入式资源
复制到输出控制器:始终复制

2 回答

  • 5

    Solution

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

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

    这将在根目录中创建一个新的Web.config文件 . Woot!

    <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

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

相关问题