![](/img/trans.png)
[英]How do I stop the C# compiler output from wrapping in the Visual Studio 2015 output window?
[英]How do I stop Visual Studio 2015 connecting to every connection string on project load?
尝试打开包含大量连接字符串的解决方案时,Visual Studio 2015会在加载项目时尝试连接到每个连接。
我们团队中的每个开发人员在开发过程中都会使用SQL Server的本地实例。 此实例可以具有我们主数据库的多个副本,其中包括不同级别的迁移-我们是一个小型团队,因此通常最终会在中途切换任务。
为此,我们有许多特定于计算机的连接字符串,并且在创建DbContext时,我们使用计算机名称来确定要使用的连接字符串:
<connectionStrings>
<!-- Steve -->
<add name="MachineConnection_LT4" providerName="System.Data.SqlClient"
connectionString="Data Source=LT4\SQL2012;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx;MultipleActiveResultSets=True" />
<!-- Sean -->
<add name="MachineConnection_DESKTOP-UQV58RL" providerName="System.Data.SqlClient"
connectionString="Data Source=DESKTOP-UQV58RL\SQLEXPRESS;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx;MultipleActiveResultSets=True" />
<!-- Sarah -->
<add name="MachineConnection_Dev-3" providerName="System.Data.SqlClient"
connectionString="Data Source=Dev-3\;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx;MultipleActiveResultSets=True" />
<!-- Graham -->
<add name="MachineConnection_lt5" providerName="System.Data.SqlClient"
connectionString="Data Source=.;Initial Catalog=xxx;Integrated Security=True;MultipleActiveResultSets=True" />
<add name="MachineConnection_graham-surface3" providerName="System.Data.SqlClient"
connectionString="Data Source=.;Initial Catalog=xxx;Integrated Security=True;MultipleActiveResultSets=True" />
<add name="MachineConnection_graham-pc-10" providerName="System.Data.SqlClient"
connectionString="Data Source=.;Initial Catalog=xxx;Integrated Security=True;MultipleActiveResultSets=True" />
<!-- Alex -->
<add name="MachineConnection_Dev9" providerName="System.Data.SqlClient"
connectionString="Data Source=Dev9;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx;MultipleActiveResultSets=True" />
<!-- Reuben -->
<add name="MachineConnection_ReubenPC" providerName="System.Data.SqlClient"
connectionString="Data Source=REUBENPC\SQLEXPRESS;Initial Catalog=xxx;Integrated Security=True;MultipleActiveResultSets=True" />
</connectionStrings>
然后像这样初始化我们的上下文:
public class TTDataContext : DbContext
{
public const string CacheKey = "dbContext";
public TTDataContext()
: base(SqlConnections.GetConnectionStringName())
{
}
...
}
并使用它来帮助:
public class SqlConnections
{
private const string DefaultConnectionStringName = "DefaultConnection";
/// <summary>
/// Get the name of the connection string to use.
/// This attempts to find a machine-specific connection string e.g. MachineConnection_LT4, and falls back to
/// the default connection string if a machine-specific connection string is not found
/// </summary>
/// <returns></returns>
public static string GetConnectionStringName()
{
// This enables a connection string to be completely overridden in the cloud service configuration
try
{
var cloudConnectionString = CloudConfigurationManager.GetSetting("TTDatabaseConnectionString");
if (!String.IsNullOrEmpty(cloudConnectionString)) return cloudConnectionString;
}
catch
{
// Deliberately empty - an exception will be thrown if not running on AppFabric
}
string machineSpecificConnectionStringName = string.Format("MachineConnection_{0}", Environment.MachineName);
string connectionString = ConfigurationManager.ConnectionStrings[machineSpecificConnectionStringName] == null
? DefaultConnectionStringName
: machineSpecificConnectionStringName;
return connectionString;
}
}
当Visual Studio 2015加载项目时(无论是初始设置还是更改Git分支),它都会尝试建立与列表中指定的每个单个连接字符串的连接(通过删除其中的1个来确认),并且它们都是本地的它停止连接的每台相关计算机,直到连接超时,并引发以下错误:
Visual Studio 2013对此设置没有问题。 有没有办法说服Visual Studio 2015以相同的方式运行?
这是由扩展引起的-特别是Karma测试适配器(版本1.1.3),该适配器似乎在项目加载时自动运行一些代码。
禁用此扩展程序可以解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.