我正在使用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转换?
答案 0 :(得分:17)
我找到了适用于我的workaround:
创建所需的配置(Dev,QA,Production等)和相关的Web配置转换。
使用记事本或其他文本编辑器,并在标记之前(项目文件末尾附近)在Web应用程序项目文件(.csproj文件)中包含以下内容:
<Target Name="AfterBuild">
<TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="Web.Transformed.config" />
</Target>
不要在Web应用程序项目中包含Web.Transformed.config - 如果你这样做,visual studio会在每次构建之后提醒你这些变化非常烦人。
在网页设置项目中: 选择内容文件 - &gt;排除过滤器并添加Web.config(以及包含转换规则的所有其他Web。*。config文件)。
在网页设置项目中: 选择文件系统编辑器图标 - &gt; Web应用程序文件夹 - &gt;添加文件 并在Web应用程序项目文件夹的根目录中选择Web.Transformed.config。
在同一屏幕中:右键单击Web.Transformed.config并将其重命名为Web.config
现在,您可以使用所选配置生成.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的一部分。