我有一个VC2010 C#解决方案,其中包含许多项目。
例如,我有一个Web项目,我有一个类库。
在web.config文件中,我在<appSettings>
部分有一个密钥,例如
<add key="FileDirectory" value="G:\ftproot\sales" />
我还在Web.Production.config文件中添加了一个键,以反映服务器上的文件目录。
所以当我在我的web项目中引用它时(它是MVC) - 我这样做:
var FTPPath = ConfigurationManager.AppSettings["FileDirectory"];
这在我的网站项目中运行良好。但是,我还需要在类库中引用它,这可以解决我的问题 - 有没有办法从另一个项目引用web.config文件中的一个键,例如一个类库,在同一个解决方案中?
感谢所有帮助。 感谢
答案 0 :(得分:16)
是的,您可以使用完全相同的代码。 .Net将在启动应用程序域的应用程序的配置文件中查找配置密钥。这样的应用程序使用的类库可以访问它的配置文件。
答案 1 :(得分:3)
类库没有自己的配置。它们使用的是可用于执行它们的配置。
这意味着你应该能够使用相同的代码,它将从配置中读取设置(假设它在那里)。
虽然这并不总是方便(例如,如果您为MMC管理单元编写基于.net的插件,因为这意味着您必须修改系统文件夹中的mmc.exe.config。)
您可能更好的方法是将此必需的配置设置传递到库代码中。然后在您控制配置的应用程序中,您可以从那里读取它并将其传入,而在您不能使用的应用程序中,您可以使用其他方法,例如从注册表或手动读取配置文件中读取。或者充分利用这两个世界并制作它以便您可以将其传入,如果没有这样做,它会尝试从默认配置中读取它。
This question有关于与dll配置相关的陷阱的更多细节,但是如果需要,还有一些技术可以做到这一点。