【问题标题】:ASP.NET combine\overlay multiple projects upon build\deployASP.NET 在构建\部署时组合\覆盖多个项目
【发布时间】:2011-05-26 00:48:53
【问题描述】:

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

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

有没有办法通过 MSBuild 或任何其他 .NET 构建工具来实现这一点?

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

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

【问题讨论】:

  • 另外,我很想听听与多个 Web 项目共享配置文件的任何其他方法。

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


【解决方案1】:

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

  • 我将配置文件放在某个共享项目的文件夹中。
  • 右键单击配置文件并选择属性。
  • 确保 Build ActionContent 并且 复制到输出目录Copy Always
  • 从“主项目 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2015-09-25
    • 2017-04-18
    • 2018-06-10
    • 2020-01-13
    • 2021-03-31
    • 1970-01-01
    相关资源
    最近更新 更多