C# Sql连接在版本中不工作

C# Sql连接在版本中不工作,c#,sql,sql-server,sql-server-express,C#,Sql,Sql Server,Sql Server Express,我的程序有问题,一切都在调试模式下工作,但当我切换到发行版时,我得到InvalidOperationException: 这是我的连接字符串 Data Source=.\\SQLEXPRESS;Initial Catalog=visondb; User ID=sql; Password=test;Connect Timeout=30; Asynchronous Processing = true; 我尝试使用 try { // await

我的程序有问题,一切都在调试模式下工作,但当我切换到发行版时,我得到InvalidOperationException:

这是我的连接字符串

Data Source=.\\SQLEXPRESS;Initial Catalog=visondb; User ID=sql; Password=test;Connect Timeout=30; Asynchronous Processing = true;
我尝试使用

        try
        {
           // await dbConnAsync(_sqlcon);   
            _sqlcon.Open();
        }
        catch (SqlException ex)
        {
            MessageBoxResult result = System.Windows.MessageBox.Show(ex.ToString());
        }
但在发行版中,它不起作用,当我使用exe时,我只会看到窗口“程序停止响应”

在何处查找错误?

我的最佳猜测(基于此处有限的信息)是您从发布版的
Properties.Settings中提取的值之一。生成连接字符串的默认值为

  • 空白(空字符串),或
  • 不是你期望的那样
因此创建了一个无效的连接字符串


您应该在
\u sqlcon.Open()之前在线调试并确保连接字符串与您在发布模式下的预期一致。

为什么不在配置中使用连接字符串?您是对的,但调试和发布的连接字符串可能不同。第一个有效的连接字符串是Data Source=。\SQLEXPRESS;初始目录=visondb;用户ID=sql;连接超时=30;异步处理=真;第二个数据源=。\\SQLEXPRESS;初始目录=visondb;用户ID=sql;密码=测试;连接超时=30;异步处理=真@user1938408其中哪一个是调试版本,哪一个是发布版本?我被你的评论弄糊涂了。@user1938408你确定你在这里显示了全部代码吗?这里的第一个注释中缺少代码显示的硬编码到字符串中的内容…当我使用_sqlcon.ConnectionString=@“Data Source=“…”时,数据源中的“\”数有问题。。。。。。在visual debug and release中有“\”但是当我从目录中启动exe时,我得到“\”如何修复此问题?@user1938408在添加“@”指令后是否确保成功重新发布exe?因为听起来这解决了你的问题。
        try
        {
           // await dbConnAsync(_sqlcon);   
            _sqlcon.Open();
        }
        catch (SqlException ex)
        {
            MessageBoxResult result = System.Windows.MessageBox.Show(ex.ToString());
        }