首先我要说的是,我知道类库的配置方式来自引用项目的配置。就我而言,引用项目是一个MVC Web应用程序。
虽然这通常是有道理的,但是当你的类库只是为了提供对Web服务的访问时,我认为它不会。右键单击“更新服务引用”的服务引用时,Visual Studio具有一项功能。这将更新类库中的app.config
文件,而不是引用项目中的配置文件。如果app.config
文件将被忽略,则不是很有用。
当然,您可以继续将app.config
文件的新版本复制到(在此实例中)不同项目中的web.config
文件,但这很痛苦,您必须保持记住这样做。更重要的是,我认为在Web服务项目中保持配置设置在语义上更好。如果该Web服务更改了URL,我希望引用项目的所有内容都能获取新URL。如果引用类库的内容想要使用不同的URL,则其配置可以覆盖类库,但我仍然希望类库具有一组默认设置。我不想更改每个引用项目的配置。
考虑到所有这些,有没有办法强制/破解/无论什么.NET使用类库中的配置为WCF端点等,而不是查看引用项目配置中的值?
答案 0 :(得分:0)
抱歉,这不是它的工作方式。
您的服务位置和其他参数可以从一个环境更改为下一个环境。这些更改必须反映在环境的web.config中。
答案 1 :(得分:0)
基本上,可以通过执行大量工作来为类库创建app.config,例如在构建后事件中构建项目时手动将app.config文件复制到bin目录,以及手动从中读取值并将其插入到Web服务绑定中。但是我决定放弃并将它们复制到我的web.config文件中(在这个例子中,因为我正在编写一个Web应用程序),然后每次从Visual Studio刷新Web服务时手动更新它们。如果您实际上有几个不同的应用程序访问共享库,我仍然认为这样做是合理的,因为您可能希望该库只引用一个Web服务,如果它发生了更改,您只需要更改该库{{ 1}}文件而不是所有不同的应用程序'.config
文件。
对于我为什么VS创建一个名为app.config的文件是一个谜,因为我认为它具有很强的误导性;它使得看起来这个文件的配置设置将被读取,而实际上它们将被忽略。更合适的文件名更像是“shouldBeCopiedIntoYourActualAppOrWeb.config”。