ASP.NET Web.config转换在安装程序中不起作用

时间:2010-06-07 20:12:10

标签: asp.net visual-studio-2010 web-config

我正在使用Visual Studio .NET 2010中的ASP.NET项目,并尝试使用Web Setup Project创建MSI安装程序。我添加了项目的主要输出(似乎引入了相关的依赖项)和项目中的内容文件(它引入了Web.config和.svc文件)。

问题在于,它不是应用XDT转换并使用Web.Release.config创建Web.config,而只是将Web.config,Web.Release.config和Web.Debug.config复制到安装程序根本没有进行任何转换。

如何在创建安装程序之前应用Web.config转换?

3 个答案:

答案 0 :(得分:17)

我找到了适用于我的workaround

  1. 创建所需的配置(Dev,QA,Production等)和相关的Web配置转换。

  2. 使用记事本或其他文本编辑器,并在标记之前(项目文件末尾附近)在Web应用程序项目文件(.csproj文件)中包含以下内容:

    <Target Name="AfterBuild">
      <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="Web.Transformed.config" />
    </Target>
    

    不要在Web应用程序项目中包含Web.Transformed.config - 如果你这样做,visual studio会在每次构建之后提醒你这些变化非常烦人。

  3. 在网页设置项目中: 选择内容文件 - &gt;排除过滤器并添加Web.config(以及包含转换规则的所有其他Web。*。config文件)。

  4. 在网页设置项目中: 选择文件系统编辑器图标 - &gt; Web应用程序文件夹 - &gt;添加文件 并在Web应用程序项目文件夹的根目录中选择Web.Transformed.config。

  5. 在同一屏幕中:右键单击Web.Transformed.config并将其重命名为Web.config

  6. 现在,您可以使用所选配置生成.msi文件,并转换根web.config文件! 请注意,这不会影响子文件夹中的web.config文件。

答案 1 :(得分:1)

答案最终被定位在另一个SO帖子上,当我在询问之前我错过了,因为这不是我想要的:

MSBuild Script and VS2010 publish apply Web.config Transform

一位同事建议使用它将已转换的Web.config放置在项目的bin目录中,并将Web Setup Project配置为从bin目录中获取Web.config并将其放入安装程序中。这最终成为最可行的解决方案,而无需在Visual Studio中安装任何附加组件。

答案 2 :(得分:0)

您必须创建一个部署项目(我认为这是一个单独的下载),然后您的Web安装项目会在输入时获取部署项目的预编译输出。一个巧妙的事情是,你可以在构建时更改Web.config的一部分。