![](/img/trans.png)
[英]Copy output of custom target in one CSPROJ into another 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的一部分,則只需將屬性Copy to Output Directory : Copy Always
在myDB.mdf
。 在以傳遞方式接收myDB.mdf
的情況下,屬性Copy to Output Directory
的值與項目A無關。
PS我也嘗試過在構建項目之前先進行構建前事件清理我的項目-不起作用,因為啟動項目A(未經修改)不會觸發構建,因此不進行清理。
基本上,這是數據文件的正常行為。 僅在構建項目時才將它們復制到目標文件夾,只有在源已更改的情況下才會發生。 您可以調整構建過程以強制每次構建,但這不是一個好的解決方案,並且在沒有任何更改的情況下不必要地增加了構建時間。
解決此問題的最簡單方法可能是在打開文件之前復制文件,以便在啟動時始終將其還原到原始狀態。 理想情況下,您甚至可以將其復制到用戶文件夾,因為一旦程序在用戶計算機上的調試器之外運行,如果您以讀寫模式打開bin文件夾中的文件,則會遇到問題(通常不允許該程序寫入“程序文件”目錄或其子文件夾)。
最后,我決定添加一個指向通用文件的鏈接。 所以在我的項目中,AI有一個相對鏈接../B/myDB.mdf
。 imo並不是最佳解決方案,因為該項目現在引用了其域文件夾之外的內容,但是它似乎比自定義復制腳本更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.