问题是表适配器不断引用我尚未为其设置的连接字符串。当我转到DataSet Designer中的每个数据表时,connect表示" MyConnectionString(设置)"。当我搜索不正确的连接字符串时,VS无法找到它。
在多个解决方案中重复使用的项目。我有三种配置:Debug,Staging和Release。每个配置都有自己的连接字符串。我的app.config看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings configSource="connect.config"/>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
每个配置文件如下所示:
<connectionStrings>
<clear/>
<add name="Properties.Settings.MyConnectionString" connectionString="Data Source=CorrectDataSourceforthisConfig\SQL;Initial Catalog=MyDB;Trusted_Connection=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
在我的数据集中,我有这个XML:
<Connections>
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="MyConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="MyConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.MyMenu.Properties.Settings.GlobalReference.Default.MyConnectionString" Provider="System.Data.SqlClient" />
</Connections>
在我的settings.designer.cs中,我有这个:
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=CorrectDataSourceForDebug\SQL;Initial Catalog=MyDB;Integrated Security=True")]
public string RMSConnectionString {
get {
return ((string)(this["MyConnectionString"]));
}
}
这个流氓连接字符串来自哪里?任何帮助,想法,建议和意见将不胜感激。
答案 0 :(得分:1)
连接字符串存储在app.config文件中,有时存储在数据集中,有时存储在代码中。在我的情况下,我能够通过进入资源管理器并删除我意外创建的所有文件(即Form1)并通过搜索我的解决方案并确保没有引用错误的连接字符串来解决此问题。然后我删除了我在不同解决方案中包含此项目时使用的.DLL的所有实例,并重新引用并重建了所有项目。
答案 1 :(得分:1)
还有machine.config,它是系统上的主配置文件。这可能是您隐藏的连接字符串存储的地方。
machine.config文件还包含一个connectionStrings部分,其中包含Visual Studio使用的连接字符串。从Windows应用程序中的app.config文件中按提供者名称检索连接字符串时,将首先加载machine.config中的连接字符串,然后再加载app.config中的条目。在connectionStrings元素之后立即添加清除,以从内存中的数据结构中删除所有继承的引用,以便仅考虑在本地app.config文件中定义的连接字符串。