【问题标题】:Nuget packages to add their settings in custom xml file instead of the web/app config fileNuget 包在自定义 xml 文件而不是 web/app 配置文件中添加它们的设置
【发布时间】:2013-04-23 05:44:21
【问题描述】:

通过一些自定义逻辑,我在我的 Asp Mvc 4 应用程序中为我的 web 配置添加了一个模板。当我需要修改 web.config 文件时,我正在为其编辑模板文件,并且当我运行应用程序时,更改会在 web 配置文件中被替换。问题是,当我通过 nuget 添加需要修改 Web 配置文件的包时,我丢失了这些设置,因为所有内容都从我的模板文件中覆盖。有没有办法以某种方式强制 nuget 包修改一些自定义 xml 文件而不是原始的 web 配置文件。比如修改mytemplate.xml而不是web.config.xml

我是这个领域的新手,无法找到解决问题的方法。据我了解,需要修改 web.config 文件的包带有 web.config.transform 文件,该文件合并了必填字段,我唯一的解决方案是将包添加到我的 web 配置文件中的设置手动替换到模板文件中。还有其他解决方案吗?谢谢!

【问题讨论】:

  • 您找到解决方案了吗?我在自定义 web.config 转换时遇到了完全相同的问题。
  • 不,我找不到办法。

标签: visual-studio web-config nuget nuget-package web-config-transform


【解决方案1】:

您正在使用您的 web.config 文件做两件不同的事情:

  1. nuget 包的静态配置
  2. 网站的动态配置

web.config 文件允许您在外部文件中定义一些设置并导入它们 - 例如

  <configuration>
    ...
    <appSettings configSource="appSettings.config" />
    ...
  </configuration>

这是 appSettings.config:

  <appSettings>
    <add key="umbracoDbDSN" value="..."/>
    <add key="DefaultInstanceName" value="..."/>
    <add key="aspnet:MaxHttpCollectionKeys" value="..."/>
  </appSettings>

您不太可能需要在每次构建时完全重新生成 web.config,可能只需要特定部分 - 如果这些不与您安装的软件包冲突,那么这种方法将为您提供应用程序所需的灵活性。

或计划 B

packages.config 列出解决方案中的所有活动包

包将其 web.config 设置存储在本地文件中: /packages/package/content/Web.config.transform

您能否将构建 web.config 文件的过程扩展为:

  1. 枚举活动包
  2. 检查内容/Web.config.transform 文件
  3. 将这些文件合并到您的 web.config 构建管道中

我看不到任何重新配置​​ nuget 以将配置推送到不同文件的方法。

【讨论】:

  • 重读您的帖子后,我想我理解您建议的外包某些配置部分的方法。如果这是一个可行的解决方案,我会尝试,但是因为并不总是可以预见包会改变哪个配置部分,所以我更喜欢告诉 nuget 使用备用 xml 文件进行转换的解决方案。
猜你喜欢
  • 1970-01-01
  • 2016-07-28
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
相关资源
最近更新 更多