如何跨项目和客户端自定义 class 库配置设置

How to customize class library config settings across projects & clients

如果之前有人问过这个问题,我深表歉意;经过两天的搜索,我只能找到与我的情况不完全相关的部分答案,并且由于我缺乏经验而难以理解。

我有一个包含四个项目的解决方案:

  1. Class 库(包含数据库连接字符串、电子邮件服务器设置以及许多其他设置)
  2. Web 应用程序(Web 表单)
  3. Web 应用程序 (MVC)
  4. 网络API

项目 2、3 和 4 都引用了 class 库,并使用数据库连接字符串等来运行。这些项目还在 web.config 中包含自己的附加设置,专为该项目定制。

到目前为止一切正常...但是,我现在需要发布我的解决方案的客户端特定版本,例如ClientABC 的解决方案需要对每个项目进行不同于 ClientXYZ 的设置。所有其他方面都保持不变,只是需要更改四个项目的配置设置。

根据我的研究,我偶然发现了一个叫做 SlowCheetah which transforms the config files based on the publish profile. That sounded promising, but then I get this problem, where the class library settings aren't pushed into the other projects. I can see bits of useful info in this question 的东西,但没有将它应用到我的问题中的经验。如果可能的话,我不想将设置复制到相应项目的配置文件中,因为那样感觉很乱。

谁能帮我看看这里最好的是什么?我什至不知道我是否采取了正确的方法,但我很确定我不会是第一个问这个问题的人?

but then I get this problem, where the class library settings aren't pushed into the other projects

您必须记住,配置文件是由您的客户端 SturtUp 应用程序读取的。 Class 库不能直接 运行,但在 WebApp 或 WinApp 或 ConsoleApp 中

因此,您在 Class 库配置文件 中的任何设置都必须 复制到 WebApp 的配置文件中。

一般来说,我会从 app.config 复制一些设置到 web.config,但是,如果你在网上搜索,你可以找到一种自动执行此操作的方法。

I now need to publish client-specific versions of my solution

您可以创建多个配置文件并使用 web.config 转换:

  1. 从工具栏或构建菜单,select 配置管理器...

  1. 创建客户端所需的所有配置

  2. 现在您可以看到不同的 web.configuration 文件

  1. 现在您可以为您的 ClientABC、ClientXYZ 指定不同的配置转换并使用特定配置发布它们

编辑: 因此,您也可以为您的 Class 库或外部配置文件采用此解决方案,并在您的 web.config 中包含外部文件:External Config