更改DLL中包含在可执行项目中的连接字符串

时间:2010-11-10 22:06:44

标签: c# .net vb.net visual-studio dll

我有一个可执行的项目,我创建了一个dll,其中包括项目中常用的数据集(DLLforApp和App)。

[DLLforApp]

  1. 来自App的单独项目,但在同一解决方案中。
  2. 这是一个创建dll文件的类库项目
  3. 这个连接字符串是DLLforApp.Properties.Settings.Default.ConnectionString
  4. [应用]

    1. 同一解决方案中的另一个项目。
    2. 此项目包含一组数据集的引用..这是DLLforApp
    3. 此项目还有一个与DLLforApp相同的连接字符串。
    4. 现在,如果我编译这个项目,那么预期的输出将是......

      App.exe
      DLLforApp.dll
      App.exe.config 
      ...
      

      我可以在App.exe.config中更改App.exe的连接字符串,但是如何更改DLLforApp.dll的连接字符串? 在App中更改连接字符串不会影响DLLforApp的连接字符串..

      所以,我现在正在做的是......

      在DataSet设计器中,选择TableAdapter部分,并将属性ConnectionModifier从Internal更改为Public。

      在使用DLLforApp.datasets的表单中:

      public Form1()
      
      {
      
      InitializeComponent();
      
      customersTableAdapter1.Connection = new SqlConnection(WindowsFormsApplication1.Properties.Settings.Default.MyConnection);
      
      }
      

      这将每次重置每个tableadapter的连接.. 这是唯一的方法吗?

      谢谢,

2 个答案:

答案 0 :(得分:2)

<。>在.net中,整个应用程序使用相同的配置条目集。在你的DLLforApp项目中,你可以轻松地要求连接字符串,假设它将被定义在某个地方,比如在app.exe.config中,或者如果你愿意,你可以创建一个dllforapp.dll.config文件,它会加载也来自那个配置文件。

答案 1 :(得分:0)

您需要为dll的配置添加一个部分,因此请在您的应用程序.config文件中添加。因此,在<configSections> ... </configSections>部分(将为您提供主要应用程序)中添加以下内容:

<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <section name="MyNameSpace.MyDll.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>

然后,由于您已将该组命名为“applicationSettings”,因此您需要在<configuration> ... </configuration>下添加

  <applicationSettings>
    <MyNameSpace.MyDll.Properties.Settings>
      <setting name="ConnectionString" serializeAs="String">
        <value>My connectionString</value>
      </setting>
    </MyNameSpace.MyDll.Properties.Settings>
  </applicationSettings>

这应该给你一个良好的开端,我为一个需要特殊配置的DAL DLL做了同样的事情 - 这是我从中复制过的。