在app.config中引用class属性?
Reference class property in app.config?
我和我的一个同事正在开发一个连接到数据库的应用程序,使用 LINQ(以及随后的 DBML 文件)。我们每个人都有自己的连接字符串,以便像这样在自己的数据库上工作:
public class DbConfig
{
public static string conStr = @"My connection string";
public static string conStr = @"His connection string";
}
每次我们每个人在他们的项目部分工作时,我们只是注释掉另一个连接字符串。
我的连接是,如果我可以引用 DBML 文件使用的 app.config
文件中的任何两个 conString
属性。谢谢。
您可以创建个人构建配置 (https://msdn.microsoft.com/en-us/library/kwybya3w.aspx) 并在该配置中定义一些自定义标签,这样您就可以在代码中拥有
#if MyBuild
public static string conStr = @"My connection string";
#endif
#if HisBuild
public static string conStr = @"His connection string";
#endif
定义您的自定义
打开项目的 属性 页面 -> 构建,然后在选择自定义配置后修改条件编译常量 属性。
这就是您可以定义自己的符号的方法,然后根据您当前的构建设置(例如在每一页的顶部写上#define YourSymbol)include/exclude 实际使用#if #endif 代码
另一种解决方案可能只是添加对您的应用程序设置的外部引用,并且该引用的文件不包含在您的源存储库中(这样您就不会共享它)
这样任何程序员都可以拥有自己的文件配置
只需在您的应用程序中输入。config/web.config 一行
<appSettings configSource="YourCustomConfiguration.config"/>
然后不要将其添加到 teamfoundation 或您使用的任何 cvs
当然YourCustomConfiguration.config是一个文件,你想放哪里就放哪里,指定一个相对路径就可以了
好吧,我说的是 appsettings,但您可以根据需要使用 configSource,在您的情况下 <connectionStrings configSource="YourCustomConnectionStrings.config">
您可以使用您的机器名称来执行此操作,使用如下代码:
public static class ConnectionString
{
public static string Get
{
get
{
if(ConfigurationManager.ConnectionStrings.Count == 0)
throw new Exception("No connection strings");
var machineConnectionString = ConfigurationManager.ConnectionStrings["ConStringPrefix" + Environment.MachineName];
var genericConnectionString = ConfigurationManager.ConnectionStrings["DefaultConString"];
return machineConnectionString ?? genericConnectionString;
}
}
}
然后你 app.config 你将拥有:
<connectionStrings>
<add name="ConStringPrefix@MyPCName" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
<add name="ConStringPrefix@MyFriendPcName" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
<add name="nhibernate.conexao" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
</connectionStrings>
我和我的一个同事正在开发一个连接到数据库的应用程序,使用 LINQ(以及随后的 DBML 文件)。我们每个人都有自己的连接字符串,以便像这样在自己的数据库上工作:
public class DbConfig
{
public static string conStr = @"My connection string";
public static string conStr = @"His connection string";
}
每次我们每个人在他们的项目部分工作时,我们只是注释掉另一个连接字符串。
我的连接是,如果我可以引用 DBML 文件使用的 app.config
文件中的任何两个 conString
属性。谢谢。
您可以创建个人构建配置 (https://msdn.microsoft.com/en-us/library/kwybya3w.aspx) 并在该配置中定义一些自定义标签,这样您就可以在代码中拥有
#if MyBuild
public static string conStr = @"My connection string";
#endif
#if HisBuild
public static string conStr = @"His connection string";
#endif
定义您的自定义
打开项目的 属性 页面 -> 构建,然后在选择自定义配置后修改条件编译常量 属性。
这就是您可以定义自己的符号的方法,然后根据您当前的构建设置(例如在每一页的顶部写上#define YourSymbol)include/exclude 实际使用#if #endif 代码
另一种解决方案可能只是添加对您的应用程序设置的外部引用,并且该引用的文件不包含在您的源存储库中(这样您就不会共享它) 这样任何程序员都可以拥有自己的文件配置
只需在您的应用程序中输入。config/web.config 一行
<appSettings configSource="YourCustomConfiguration.config"/>
然后不要将其添加到 teamfoundation 或您使用的任何 cvs
当然YourCustomConfiguration.config是一个文件,你想放哪里就放哪里,指定一个相对路径就可以了
好吧,我说的是 appsettings,但您可以根据需要使用 configSource,在您的情况下 <connectionStrings configSource="YourCustomConnectionStrings.config">
您可以使用您的机器名称来执行此操作,使用如下代码:
public static class ConnectionString
{
public static string Get
{
get
{
if(ConfigurationManager.ConnectionStrings.Count == 0)
throw new Exception("No connection strings");
var machineConnectionString = ConfigurationManager.ConnectionStrings["ConStringPrefix" + Environment.MachineName];
var genericConnectionString = ConfigurationManager.ConnectionStrings["DefaultConString"];
return machineConnectionString ?? genericConnectionString;
}
}
}
然后你 app.config 你将拥有:
<connectionStrings>
<add name="ConStringPrefix@MyPCName" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
<add name="ConStringPrefix@MyFriendPcName" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
<add name="nhibernate.conexao" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
</connectionStrings>