ASP.NET在build \ deploy上组合\ overlay多个项目

时间:2011-05-26 00:48:54

标签: asp.net asp.net-mvc visual-studio msbuild

我有几个ASP.NET MVC Web项目都需要访问同一组配置文件。由于我有多个需要共享的配置文件,因此拥有它们的多个副本并不理想。

使用Maven3,我可以在构建时将各个J2EE webapp叠加在其他人之上,这样我就可以创建一个只包含配置文件的项目,并将它组合到每个单独的Web应用程序项目中。

有没有办法用MSBuild或任何其他.NET构建工具实现这一目标?

我唯一的解决方案是使用构建事件将文件从一个项目复制到其他项目中,但是当通过MSBuild创建部署包时,它只打包属于项目一部分的文件,并忽略任何其他文件在文件夹中。

我的最终目标是将这些配置文件包含在使用msbuild /t:Package生成的部署项目中(最终部署到IIS7,希望能够满足他们所需的一切)。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。

  • 我将配置文件放在某个共享项目的文件夹中。
  • 右键单击配置文件,然后选择“属性”。
  • 确保构建操作内容复制到输出目录 始终复制
  • 参考“主项目1”和“主项目2”中的“共享项目”

现在,当构建“主项目1”和“主项目2”时,还将构建其参考项目(“共享项目”),并将配置文件发布到/ bin目录。

要访问这些配置文件:

string configPath = HttpRuntime.BinDirectory + string.Format(@"ConfigDirectory\{0}.config", someConfigFileName );

然后你可以使用:

读取这个配置文件(假设它是标准的.NET配置格式)
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap
            {
                ExeConfigFilename = configPath
            };
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

var settings = ((AppSettingsSection)config.GetSection("appSettings")).Settings;