2009-08-17 125 views
8

我需要一些關於Visual Studio解決方案和項目組織的幫助。組織Visual Studio解決方案的最佳實踐

我有幾個項目的解決方案。所有這些都是用C#編寫的,並被編譯爲庫以供GUI使用。其中一些圖書館也與其他圖書館存在依賴關係。例如,TestExecutive需要LoggingFramework,Communications需要LoggingFramework。

哪種組織方式最好?我正在考慮在一個文件夾程序集將庫的二進制文件保存在一個地方。例如:

Solution 
    | 
    |-- TestExecutive 
    |-- LoggingFramework 
    |-- assemblies 

還有另一個問題。其中一個項目使用本地C dll。我該在哪裏放置這個圖書館?隨着圖書館的程序集或最終的可執行文件?

編輯:

好了,現在假設我有WinForms的程序運行。我有源代碼和二進制文件混合。我需要哪些功能來生成我可以分發的內容?我的意思是,所有的庫和配置文件,但沒有源代碼。我之前使用Nullsoft安裝程序完成了此操作,但我不知道Visual Studio是否可以幫助您做到這一點。

+1

您的一個項目類型是安裝程序項目。只需將其添加到您的解決方案。在整個網絡或MSDN上有很多教程。 – Clyde 2009-08-17 14:13:52

+0

有完整源代碼示例的最終解決方案嗎? – Kiquenet 2013-12-03 11:31:50

回答

8

這裏有幾件事情:

  1. 當一個項目依賴於另一個,你可以設置在Visual Studio中的依賴。右鍵點擊一個項目,然後選擇項目依賴...

  2. 對於不屬於您的解決方案的一部分(第三方工具等),我你在這裏表現出做什麼其他的.NET程序集 - 我有一個單獨的文件夾平行於項目。然後我在每個項目中設置了「Copy Local」設置爲true的程序集引用,並且它工作正常。

  3. 對於本機C dlls,它有點不同。在解決方案資源管理器的參考部分沒有直接引用它們。編譯器不會去查看dll來檢查你的p/invoke引用或類似的東西。你只需要確保dll是你的頂級web或winforms項目的部署。這是一個內容文件,就像一個CSS文件或圖像或其他東西。只需將其添加在項目中的文件,並確保「生成操作」設置爲內容,這樣的Visual Studio知道把剛纔複製的文件

5

我把我的解決方案的文件夾了一下部署的一部分與你不同。在頂層,我有以下文件夾:

\build 
\lib 
\src 

build文件夾中有構建腳本(惡性,MSBuild的,等等)。任何第三方程序集(或者我沒有在解決方案中構建的任何東西)都會被放到lib文件夾中,放在適當的子文件夾中。例如,我將在lib文件夾中包含log4net,NUnit和RhinoMocks文件夾,每個文件夾都包含該依賴項所需的文件。 src文件夾包含解決方案和所有項目文件。

我喜歡這種結構,因爲它清楚地描述了項目代碼和項目所需的其他內容。另外,我通常會設置一些自定義構建任務,以將我的項目的結果程序集複製到\ deploy或\ lib \文件夾中。這樣,您不必在\ src \\ bin \\文件夾中搜索以獲取構建的程序集或整個項目;但是這似乎超出了你的問題的範圍。

Btw ...我沒有自己想出這個結構,我想我開始使用Tree Surgeon並從那裏發展我的過程。

+0

不超出編輯的範圍;-)感謝您的信息。 – yeyeyerman 2009-08-17 14:52:13

+0

樹外科醫生「發展樹」博客系列真的很好。 – 2011-01-19 05:02:17

+0

花了我一段時間來挖掘這些帖子。你可以在這裏找到它們(https://mikebroberts.com/articles/how-to-setup-a-net-development-tree/)。 – Ryogi 2018-01-25 00:06:52