當引用一個庫程序集時,它被自動複製到最終的bin目錄中。然而,* .dll.config不是,有沒有辦法自動複製這個配置文件?我們可以自動複製* .dll.config嗎?
回答
在Visual Studio中,當您打開活動文件時會出現'屬性'部分。對於App.config中,它有一個叫Copy to Output Directory
屬性,選項有
Do Not Copy
Copy if Newer
Copy Always
你想第二個或第三個選項。
對於默認的CLR主機,只有一個EXE可以有一個.config文件。不是DLL。複製.dll.config文件應該毫無意義,除非您明確地打開並解析文件。在這種情況下,您應該使用不同的名稱以避免混淆。
爲什麼我沒有dll的配置文件?那有什麼問題?正如你可能知道ASP.NET網站被編譯成dll。你是說web配置不存在嗎? – oleksii 2011-05-07 07:21:55
問題是它不被支持。 ASP.NET是一個不同的CLR主機,它有不同的規則。 – 2011-05-07 09:44:09
我有同樣的問題。 屬性不會幫助您將app.config複製到需要的位置。比如你什麼時候做整合單元測試。然後,你可以有兩種選擇:
使用後生成事件
複製/ Y「$(PROJECTDIR)的App.config」「.... \測試\調試\ $(TargetFileName)。配置」
手動配置文件部分從libA.dll複製到libA.Test.dll
我最終使用2,因爲它被證明是更健壯的我。
將dll項目中的app.config重命名爲[dllname] .dll.config。將相同文件的屬性更改爲「始終複製」並重建。對我很好。我也嘗試通過VS中的Settings對話框添加另一個設置,即使它不是app.config,它也會更新。順便說一句,使用VS2013更新3.
做類似的事情的另一種方法是創建一個硬鏈接文件與項目文件夾中的[dllname] .dll.config並更改其屬性,以「永遠複製」的方式你仍然有你的app.config正常,但如果你更新它,它也會更新你的[dllname] .dll.config文件。唯一真正的警告是,當你檢入像TFS這樣的源代碼控制時,它可能無法跟蹤硬鏈接,並且你可能會意外地覆蓋鏈接。但是,當您「添加和現有項目」作爲鏈接時,它會再次確認鏈接,因此它可能會或可能不適合您的情況。你決定。
雖然我遲到了,但我的回答可以幫助別人。我使用以下命令作爲預生成事件:
copy /Y $(SolutionDir)\[YOUR_LIBRARY_PROJECT]\app.config $(ProjectDir)$(OutputPath)[YOUR_LIBRARY_NAME].dll.config
我試圖儘可能地保持動態,並且上述命令奏效。
有一個在下面的帖子一個更好的答案:
// Add this <ItemGroup> at the end of your .csproj file before </Project> and after <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<Content Include="app.config">
<Link>$(TargetName).dll.config</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
我還沒有嘗試過這個,但是如果你想在緩慢獵豹的部署上轉換文件,它似乎會出現問題。 – emragins 2017-03-22 23:35:22
- 1. [myproject] .dll.config文件 - 我需要它們嗎?
- 2. 我們可以限制我們的數據庫不自動增長嗎?
- 3. 我們可以製作每週自動啓動的Google文檔腳本嗎?
- 4. 我們可以綁定postgresql流式複製的源IP嗎?
- 5. 我們可以一起使用ehcache複製和兵馬俑嗎?
- 6. 我們可以說再見覆制構造函數嗎?
- 7. makefile中的'tee',我們可以複製stderr嗎?
- 8. 我們可以動畫顯示嗎?
- 9. 我們可以在angularjs中製作自定義過濾器嗎?
- 10. 我們可以更改我們自己的dEFAULT_FD_BUFFER_SIZE值嗎?
- 11. java - 我們可以做我們自己的內存管理嗎?
- 12. 我可以從NSString複製到NSMutableString嗎?
- 13. 我們可以使DataTable在列上自動排序嗎?
- 14. 我們可以通過Selenium或QTP自動化綠屏嗎?
- 15. 我們可以在.NET中執行OLE自動化嗎?
- 16. 我們可以使用watir自動化Silverlight屏幕嗎?
- 17. 我們可以自動化struts2.x驗證框架嗎?
- 18. 我們可以停止自動遞增的ID列嗎?
- 19. 我們可以自動標記預定的構建嗎?
- 20. 我們可以爲自動標記系統集思廣益嗎?
- 21. 我們可以用2個動作製作1個UIButton嗎?
- 22. 我們可以重載MVC控制器的動作方法嗎?
- 23. 可以複製/複製CCLayer嗎?
- 24. 我可以自己製作網站嗎?
- 25. Solr複製可以通過自動字典更新完成嗎?
- 26. 可以Visual Studio C++ Express(2010)自動複製依賴關係嗎?
- 27. Postgres-XL可以同時分片,複製和自動平衡嗎?
- 28. 如何/我們可以在Cloudant中使用複製時應用「限制」嗎?
- 29. 我可以自動實現類嗎?
- 30. 我可以自動更換嗎?
但這些選項是在當前的解決方案,以進入bin目錄中的項目文件;而不是您可能使用Add Reference選項引用的外部dll。 – 2011-05-07 02:47:27