Wpf &引用;无法将文件作为数据库附加";首次安装我的代码ClickOnce应用程序时出错

Wpf &引用;无法将文件作为数据库附加";首次安装我的代码ClickOnce应用程序时出错,wpf,ef-code-first,clickonce,Wpf,Ef Code First,Clickonce,我正在构建一个WPF应用程序,首先使用EF代码 该应用程序在调试时似乎工作正常,但当我使用ClickOnce发布并安装它时,出现以下错误: Cannot attach the file [path & filename] as database 我试过: 使用VS服务器资源管理器检查我的连接字符串 () 更改连接字符串中数据库的名称 从连接字符串中删除标签,如AttachDbFilename 使用sqlcmd注销数据库 () 删除localdb实例 () 使用VS的SQL Serve

我正在构建一个WPF应用程序,首先使用EF代码

该应用程序在调试时似乎工作正常,但当我使用ClickOnce发布并安装它时,出现以下错误:

Cannot attach the file [path & filename] as database
我试过:

  • 使用VS服务器资源管理器检查我的连接字符串

    ()

  • 更改连接字符串中数据库的名称

  • 从连接字符串中删除标签,如
    AttachDbFilename

  • 使用sqlcmd注销数据库 ()

  • 删除localdb实例 ()

  • 使用VS的SQL Server对象资源管理器删除数据库

  • 只需省略连接字符串,但我得到一个不同的错误:

    {"Expansion of |DataDirectory| failed while processing the connection string. 
    Ensure that |DataDirectory| is set to a valid fully-qualified path."}
    
    (但是,除了注释掉的连接字符串外,我的代码中没有提到
    | DataDirectory |

  • 使用
    DropCreateDatabaseIfModelChanges
    ,甚至
    DropCreateDatabaseAlways
    ,而不是
    CreateDatabaseIfNotExists

在我的家用电脑上,我不得不将应用程序设置为不查找更新,因为我没有网络来放置安装文件夹。 当我在这里发布、安装和运行应用程序时,我没有收到任何错误-但应用程序似乎只是在后台运行,直到我终止它的进程。用户界面从不显示


更新:

同时,我已经使用SQLServerManagementStudio删除了数据库,这似乎有一些帮助

  • 如果不使用连接字符串,则会出现
    |DataDirectory |
    错误: 处理连接字符串时,| DataDirectory |的
    扩展失败。确保将| DataDirectory |设置为有效的完全限定路径。

  • 如果我随后在调试模式下运行应用程序(使EF创建DB),然后运行(或重新安装)该应用程序,则会出现以下错误:
    管道另一端无流程

  • 如果随后使用SQL Server Management Studio删除数据库(在上述步骤中的调试运行期间创建),并再次运行已安装的应用程序,则会再次出现
    | DataDirectory
    错误

  • 即使使用连接字符串指定绝对路径,也会出现
    | DataDirectory |
    错误

  • 如果我随后在调试模式下运行应用程序(使EF创建DB),然后运行(或重新安装)应用程序,我将再次收到
    无法将文件作为数据库附加的错误

  • 如果随后使用SQL Server Management Studio删除数据库(在上述步骤中的调试运行期间创建),并再次运行已安装的应用程序,则会再次出现
    | DataDirectory
    错误


更新2:

  • 我让应用程序在我的家用电脑上运行。 所需要的只是。。。不要使用添加到“开始”菜单的快捷方式ClickOnce,而是运行.exe本身

    ClickOnce在安装启动后仍不会显示任何通知,并且在安装完成后仍无法启动应用程序

  • 我不知道这个“补丁”在工作中是否也会起作用,直到星期二才能在那里试用——但我会随时通知你。 我在那里做了短暂的尝试,但出现了以下错误:
    无法加载文件或程序集“EntityFramework,版本=6.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”或其依赖项之一
    ... 但我很可能使用了一个过时的.exe副本,因为我当时很忙


更新此答案:我找到了一个修复程序:

我的问题似乎是由连接字符串故障引起的:

故障出现在
名称
标记中。它应该简单地说,“DienstreisDBContext”(从而省略了存储DBContext类的文件夹的名称)


我找到了一份工作:

如果在安装过程中忽略错误,并使用.exe而不是“开始”菜单快捷方式ClickOnce生成,则我的应用程序似乎运行正常

可悲的是,这意味着更新我的应用程序不会像ClickOnce想象的那么容易