C# 更改可执行项目中包含的DLL中的连接字符串
我有一个可执行的项目,我创建了一个dll,其中包括项目之间常用的数据集(DLLforApp和App) [DLLforApp]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相同的连接字符串 现在,如果我编
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>