假设我们有Assembly1和Assembly2.
Assembly2是Assembly1使用的C#类库.
Web和服务引用已配置并存储在Asembly2 / app.Config中.
此外,EF连接字符串在Assembly2 / app.Config中.
当我在Assembly1中使用Assembly2时,不使用Assembly2配置文件.实际上,在该场景中,只有Assembly1配置可以通过默认方式访问.
因此,我必须将Assembly2配置内容复制到Assembly1配置中.
这对我来说很有用.
还有另一种方式吗?更好的方法?
重复配置数据似乎是错误的.
你有推荐或技术吗?
谢谢.
解决方法
您需要将更改应用于入口点exe程序集的配置文件.从不使用类库汇编(dll)配置文件.它们由Visual Studio制作,因此您可以根据需要轻松地将设置复制到exe配置文件.
Bellow是exe程序集的配置文件的示例,它包含类库ClassLibrary1的设置和exe程序集MainAssembly的设置.您可以看到两个连接字符串都在一个connectionStrings设置中.但是,如果您需要设置其他设置,则在连接字符串旁边,您需要添加额外的部分.
如果您已经在使用这种技术,这是正确的方法.这种技术很灵活.例如,如果一个框上有多个具有相同连接字符串的项目,则可以在machine.config文件中指定连接字符串.如果需要,您还可以覆盖某些项目中的设置.
<?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup,System,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" > <!--This section declaratrion pasted here from dll conifg file --> <section name="ClassLibrary1.Properties.Settings" type="System.Configuration.ClientSettingsSection,PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <!--This section declaratrion was here in the first place --> <section name="MainAssembly.Properties.Settings" type="System.Configuration.ClientSettingsSection,PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </sectionGroup> </configSections> <connectionStrings> <!--This connection string was here in the first place --> <add name="MainAssembly.Properties.Settings.MainAssemblyConnectionString" connectionString="MainConnectionStringValue" /> <!--This connection string pasted here from dll config file --> <add name="ClassLibrary1.Properties.Settings.LibraryConnectionString" connectionString="LibraryConnectionStringValue" providerName="" /> </connectionStrings> <applicationSettings> <!--This settings section pasted here from dll config file --> <ClassLibrary1.Properties.Settings> <setting name="LibrarySetting" serializeAs="String"> <value>LibrarySettingValue</value> </setting> </ClassLibrary1.Properties.Settings> <!--This strings section was here in the first place --> <MainAssembly.Properties.Settings> <setting name="MainAssemblySetting" serializeAs="String"> <value>MainSettingValue</value> </setting> </MainAssembly.Properties.Settings> </applicationSettings> </configuration>