我创建了一个dll,其中包含一些从项目到项目共享的功能。但是,我可能需要从引用它的项目中调整dll的设置。在完全不同的解决方案中公开另一个项目使用的dll配置设置的最佳方法是什么?
我尝试过的方式:
appSettings import
ApplicationSettings import
当前设置,消耗解决方案设置值被忽略/未设置,为什么?
dll设置
public class ApplicationSettingsRetriever : IApplicationSettingsRetriever
{
public string LogEnvironmentSetting => ConfigurationManager.AppSettings.Get("LogEnvironment");
}
Consumer Solution app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<appSettings>
<add key="LogEnvironment" value="local"/>
</appSettings>
</configuration>
答案 0 :(得分:2)
您无需导入任何内容。在.NET中,DLL从父应用程序获取其配置设置,而不是从其自己的配置获取。因此,例如,如果您需要DLL从父应用程序的配置中读取连接字符串,则只需使用
即可return ConfigurationManager.AppSettings["ConnectionString"];
这将从包含Windows应用程序的app.config
中的自定义配置部分读取,或者从web.config
读取,如果它是Web应用程序。
答案 1 :(得分:0)
你可以做的一件事就是制作类似MyLibraryConfiguration
类的东西。
当您在库中创建对象的实例时(或者可能在静态函数中设置静态值),您可以传递此Configuration
来设置可更改的值。