0

我有一个项目 A 和一个项目 B。项目 A 依赖于项目 B。B 包含一个我想附加到 A 中的数据库文件 (.mdf)。

为此,我只需使用

<add name="myDB"
     connectionString="Data Source=(LocalDB)\mssqllocaldb;
             AttachDbFilename=|DataDirectory|\myDB.mdf;
             Database=some_alias_for_myDB;
             Integrated Security=True" />

然后,我构建项目 A 并启动它,它成功使用myDB. 但是,我希望每次启动项目 A时,都从myDB. 如果myDB.mdf是项目 A 的一部分,我会简单地Copy to Output Directory : Copy AlwaysmyDB.mdf. 在传递接收的情况下myDB.mdf,该属性的价值Copy to Output Directory对项目 A 没有影响。

PS我还尝试了预构建事件以在构建项目之前清理我的项目 - 不起作用,因为启动项目 A 在未修改时不会触发构建,因此没有进行清理。

4

2 回答 2

1

基本上,这是数据文件的正常行为。只有在构建项目时才会将它们复制到目标文件夹,这仅在源已更改时才会发生。您可以调整构建过程以每次都强制构建,但这不是一个好的解决方案,并且在没有任何变化的情况下不必要地为您的项目增加了构建时间。

对于这个问题,最简单的解决方案可能是在打开文件之前复制文件,以便在启动时始终恢复到原始状态。最佳情况下,您甚至可以将其复制到用户文件夹,因为一旦程序在用户计算机上的调试器之外运行(通常不允许程序写入“程序文件”目录或其子文件夹)。

于 2018-01-13T19:21:04.483 回答
0

最后我决定添加一个指向公共文件的链接。所以在我的项目中 AI 有一个相对的联系../B/myDB.mdf。它不是最好的解决方案,imo,因为该项目现在引用了其域文件夹之外的内容,但它似乎比自定义复制脚本更好。

于 2018-01-15T09:57:01.363 回答