复制到 csproj 中的输出目录,具有传递依赖
Copy to output dir in csproj, with transitive dependencies
我有一个项目 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 的一部分,我会简单地在 myDB.mdf
上放一个 属性 Copy to Output Directory : Copy Always
。在传递接收到 myDB.mdf
的情况下,属性 Copy to Output Directory
的值对项目 A 没有影响。
P.S。我还尝试了预构建事件以在构建项目之前清理我的项目 - 不起作用,因为启动项目 A,当未修改时,不会触发构建,因此没有完成清理。
基本上,这是数据文件的正常行为。如果项目已构建,它们只会被复制到目标文件夹,这只会在源已更改时发生。您可以调整构建过程以每次都强制构建,但这不是一个好的解决方案,并且在没有任何更改的情况下不必要地为您的项目增加构建时间。
可能解决此问题的最简单方法是在打开文件之前复制该文件,以便它在启动时始终恢复到其原始状态。最理想的情况是,您甚至可以将其复制到用户文件夹,因为一旦程序 运行 在调试器之外,如果您以 read/write 模式打开 bin 文件夹中的文件,您将 运行 遇到问题用户计算机(通常不允许程序写入 "program files" 目录或其子文件夹)。
最后我决定在公共文件中添加一个link。所以在我的项目A中我有一个亲戚link ../B/myDB.mdf
。它不是最好的解决方案,imo,因为项目现在引用了它的域文件夹之外的东西,但是它似乎比自定义复制脚本更好。
我有一个项目 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 的一部分,我会简单地在 myDB.mdf
上放一个 属性 Copy to Output Directory : Copy Always
。在传递接收到 myDB.mdf
的情况下,属性 Copy to Output Directory
的值对项目 A 没有影响。
P.S。我还尝试了预构建事件以在构建项目之前清理我的项目 - 不起作用,因为启动项目 A,当未修改时,不会触发构建,因此没有完成清理。
基本上,这是数据文件的正常行为。如果项目已构建,它们只会被复制到目标文件夹,这只会在源已更改时发生。您可以调整构建过程以每次都强制构建,但这不是一个好的解决方案,并且在没有任何更改的情况下不必要地为您的项目增加构建时间。
可能解决此问题的最简单方法是在打开文件之前复制该文件,以便它在启动时始终恢复到其原始状态。最理想的情况是,您甚至可以将其复制到用户文件夹,因为一旦程序 运行 在调试器之外,如果您以 read/write 模式打开 bin 文件夹中的文件,您将 运行 遇到问题用户计算机(通常不允许程序写入 "program files" 目录或其子文件夹)。
最后我决定在公共文件中添加一个link。所以在我的项目A中我有一个亲戚link ../B/myDB.mdf
。它不是最好的解决方案,imo,因为项目现在引用了它的域文件夹之外的东西,但是它似乎比自定义复制脚本更好。