Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改可执行项目中包含的DLL中的连接字符串_C#_.net_Vb.net_Visual Studio_Dll - Fatal编程技术网

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

C# 更改可执行项目中包含的DLL中的连接字符串,c#,.net,vb.net,visual-studio,dll,C#,.net,Vb.net,Visual Studio,Dll,我有一个可执行的项目,我创建了一个dll,其中包括项目之间常用的数据集(DLLforApp和App) [DLLforApp] 应用程序中的独立项目,但在同一解决方案中 这是一个创建dll文件的类库项目 这有一个连接字符串,它是DLLforApp.Properties.Settings.Default.ConnectionString [应用程序] 同一解决方案中的另一个项目 此项目包括一组数据集的参考。。哪个是DLLforApp 此项目还有一个与DLLforApp相同的连接字符串 现在,如果我编

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

[DLLforApp]

  • 应用程序中的独立项目,但在同一解决方案中
  • 这是一个创建dll文件的类库项目
  • 这有一个连接字符串,它是DLLforApp.Properties.Settings.Default.ConnectionString
  • [应用程序]

  • 同一解决方案中的另一个项目
  • 此项目包括一组数据集的参考。。哪个是DLLforApp
  • 此项目还有一个与DLLforApp相同的连接字符串 现在,如果我编译这个项目,以下将是预期的输出

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

    所以,我现在要做的是

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

    在使用DLLforApp.dataset的表单中:

    public Form1()
    
    {
    
    InitializeComponent();
    
    customersTableAdapter1.Connection = new SqlConnection(WindowsFormsApplication1.Properties.Settings.Default.MyConnection);
    
    }
    
    这将每次重置每个tableadapter的连接。。 这是唯一的办法吗


    谢谢,

    在.net中,整个应用程序使用相同的配置项集。在DLLforApp项目中,您可以轻松地请求一个连接字符串,假定它将在某个地方定义,例如在app.exe.config中,或者如果愿意,您可以创建一个DLLforApp.dll.config文件,它也将从该配置文件加载。

    您需要为dll的配置添加一个节,因此,将其添加到应用程序
    .config
    文件中。所以在这一节中,
    (主应用程序中会有一些)添加以下内容:

    <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”,因此需要将其添加到

    
    我的连接字符串
    

    这应该给你一个好的开始,我已经为一个DAL DLL做了同样的事情,它需要一个应用程序的特殊配置,这就是我复制这个的地方。

    我在DLLforApp项目中看不到app.exe.config的连接字符串。嗯,我有的是解决方案-App project(namespace App)-DLLforApp project(namespace DLLforApp)如果我试图在DLLforApp中添加一个新数据集,我只能在DLLforApp项目中选择一个连接字符串。你能解释一下“我在DLLforApp项目中看不到App.exe.config的连接字符串吗?”?@Jin您正在尝试添加新的TableAdapter吗?它不会在设计时加载配置字符串。您必须告诉它如何手动连接到数据库,但可以指定在运行时不使用相同的连接来加载tableadapter。您可以从配置文件加载它,在这种情况下,两者都可以工作。好吧,它看起来可以在设计时从配置字符串加载,但只有当它存储在设置文件中时才可以。只有当它存储在设置文件中时才可以。。我将编辑我的问题以获得更多澄清
      <applicationSettings>
        <MyNameSpace.MyDll.Properties.Settings>
          <setting name="ConnectionString" serializeAs="String">
            <value>My connectionString</value>
          </setting>
        </MyNameSpace.MyDll.Properties.Settings>
      </applicationSettings>