我的C#应用程序使用DataSet
和TableAdapters
。它们是从VS2008 GUI工具生成的。
示例:
右键点击项目 - >添加新项目 - >数据集
此方法会自动将连接字符串添加到app.config
。
但这是连接字符串的硬连线方法。我想以一种简单的方式更改连接字符串。但是当我使用数据集时,连接字符串从应用程序属性获取。 这种情况有什么解决方案吗?
这是 Settings.Designer.cs 文件
中的连接字符串存储 namespace WindowsFormsApplication2.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=SLCERT\\SQLEMK;Initial Catalog=TestDataBase;Integrated Security=True")]
public string TestDataBaseConnectionString {
get {
return ((string)(this["TestDataBaseConnectionString"])); // this is the connection string get from the dataset's
}
}
}
}
app.config包含
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="WindowsFormsApplication2.Properties.Settings.TestDataBaseConnectionString"
connectionString="Data Source=SLCERT\SQLEMK;Initial Catalog=TestDataBase;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
答案 0 :(得分:6)
我相信你问这个,所以你不必在本地测试和生产/测试服务器之间手动更改。
您可能需要查看How to: Transform Web.config When Deploying a Web Application Project
它是关于web.config而不是app.config,但它是一样的想法。
PS。仅适用于VS 2010及以上
答案 1 :(得分:4)
除了JP Hellemons提供的进行配置转换的建议外,您还可以做其他事情,因为只有.NET 4.0支持(本机)。您可以将任意数量的连接字符串添加到配置文件的<connectionStrings/>
部分,因此添加“DebugConnectionString”和“ReleaseConnectionString”或类似内容。
现在,为了在每次更改环境时无需干预即可使用这些,您可以使用跟踪常量。在Visual Studio中使用DEBUG
常量集进行编译,在部署发布时不存在,那么您可以执行以下操作:
#if DEBUG
return ConfigurationManager.ConnectionStrings["DebugConnectionString"];
#else
return ConfigurationManager.ConnectionStrings["ReleaseConnectionString"];
#endif
答案 2 :(得分:2)
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="DBCS" connectionString="Data Source=|DataDirectory|\Database.sdf;password=Password"
providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
并像这样访问
static string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString.ToString();
包括
System.Configuration;
命名空间