2010-04-07 88 views
16

我是新來的Visual Studio,來自Delphi。Visual Studio:添加項目/添加爲鏈接而不僅僅添加

我有一個目錄樹滿的.cs文件(根\共同)。
我也有充分的應用程序目錄樹(根\應用程序)
最後,我有一個樹上開滿大會(根\組件)

我想繼續我的.cs文件在Common樹中以及Assmblies樹中的所有環境voodoo(解決方案,項目,設置,元數據,調試數據,bin等)。所以,舉個簡單的例子,我有一個名爲PdMagic.Common.Math.dll的程序集。該解決方案和項目位於\ Assemblies \ Common \ Math。所有源代碼(.cs)文件都在\ Common \ Math中。 (matrix.cs,trig.cs,mathtypes.cs,mathfuncs.cs,stats.cs等)

當我使用Add Existing Item將matrix.cs添加到我的項目中時,它的副本是添加到\ Assemblies \ Common \ Math文件夾中。我只想引用它。我不想多份拷貝。我已經嘗試添加現有項目,並使用下拉菜單添加鏈接而不是「添加」,這似乎是我想要的。

問:什麼是「最佳實踐」爲這樣的事情?大多數人只是把這些.cs文件放在與項目相同的文件夾中?爲什麼不是「添加鏈接」的默認值?

謝謝!

+0

爲了回答您的其他問題,Prism團隊在完成這項工作方面做了大量工作。看看這篇文章:http://msdn.microsoft.com/en-us/magazine/ee321573.aspx – NerdFury 2010-04-09 20:37:23

+0

棱鏡「項目鏈接器」是完美的。正是我想到的。現在我必須弄清楚我是否可以使用它。謝謝。 – 2010-04-14 14:49:04

回答

11

在這種情況下,「最佳做法」是不打這個工具。它可以讓你做你想做的事情,但是如果你讓IDE爲你組織項目,你就可以完成更多的工作,並且能夠專注於代碼。

我會創建一個名爲PdMagic的空解決方案。常見

這會給你喜歡

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 

的文件結構,然後我一般添加src和libs文件夾(通過文件系統,而不是VS)

libs文件夾裏面,我會放我所有的第三方的依賴,以及src文件夾將舉行我所有的項目

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 
PdMagic.Common\libs 
PdMagic.Common\libs\nunit 
PdMagic.Common\src 

接下來,在Visual Studio中,我會用鼠標右鍵單擊我剛剛創建的解決方案,並單擊「添加 - >新建項目」,我指定我希望它在\ src文件夾中創建並調用它PdMagic.Common.Math

現在我的文件夾結構是這樣的

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 
PdMagic.Common\libs 
PdMagic.Common\libs\nunit 
PdMagic.Common\src 
PdMagic.Common\src\PdMagic.Common.Math 
PdMagic.Common\src\PdMagic.Common.Math\PdMagic.Common.Math.csproj 
PdMagic.Common\src\PdMagic.Common.Math\Class1.cs 

然後,您將類添加到您的PdMagic.Common.Math項目中,它們將放入包含項目文件的文件夾中。 IDE就是這樣認爲我們應該工作的,我認爲大多數開發人員都會這樣做,因爲試圖在文件系統上獲得任何其他佈局需要與IDE進行太多的爭奪。我知道來自不同的約定可能很難,並且你本能地希望在新的環境中使用相同的約定。然而,如果你堅持約定(根據你的意見是對的還是錯的),你會做的更多,因爲你不會試圖強迫IDE以你認爲應該完成的方式來完成任務。

+0

這就是我正在尋找的答案。在你寫這篇文章時,我正在做一些自我實驗,並提出了一個我不確定它能處理的(常見)案例。我針對Silverlight和WPF。大多數源代碼(.cs)是相同的,但是必須爲每個源編譯不同的程序集。所以,我需要有用於SL的PdMagic.Common.Math和用於WPF的PdMagic.Common.Math。我認爲這需要兩個使用相同Class1.cs的項目。我可以麻煩你進一步採取這一步嗎? 再次感謝您的回答。 – 2010-04-09 13:57:40

1

我認爲「最佳實踐」是有那些「共同」套路成可以代替參考源文件揪成一堆不同項目的集合。你可以將它作爲一個預先建立的程序集添加「添加引用...」,或者通過包含該程序集的項目並添加對項目的引用(也可以在「添加引用...」對話框中完成)。

這是這似乎是一些工作,以建立最初的時候(可能是)那些事情之一,但它通常從長遠來看回報。

+0

@MichaelBurr:你打敗了我!更快的鍵盤,我猜。 – Cyberherbalist 2010-04-07 15:30:59

+0

我認爲他想組織他的項目和文件,而不是VS認爲他應該這樣做,所以他正在與IDE戰鬥,讓他們按自己想要的方式做事,而不是MS如何表達自己應該想要的。我不認爲他正在嘗試重新使用不同程序集中已有的代碼。 – NerdFury 2010-04-07 15:34:33

+0

@NerdFury:據我所知,.cs文件目前不在裝配中;不過,我認爲將它們打包成一個或多個程序集供多個項目使用可能是一個好主意。這可能會被迫進入IDE的做事方式,但我認爲這是對所提問題的回答。 – 2010-04-07 16:16:29

1

如果你想「參考」 matrix.cs在您的項目,不要使用添加現有項目,創建一個引用(「添加引用」)的類庫或對象matrix.cs是的一部分。如果你不想(或不能使用)matrix.cs所屬的庫或對象,那麼添加鏈接就是你如何得到它的,但是我認真地說我從未使用過這個特殊的功能。

我已經在.NET中工作過的開發商無隔離在單獨的文件夾中的文件的.cs。 MVC中唯一一種類似於我所看到的作爲實踐的隔離,其中模型,視圖和控制器位於其自己的文件夾中。

+0

謝謝。我的意圖是將matrix.cs和其他.cs代碼放入PdMagic.Common.Math庫中,以便其他項目可以引用它。如果您不介意,請查看我對原始帖子的評論。工具供應商如何處理針對SL和WPF代碼的常見.cs案例?這些通常可以是相同的.cs,但需要爲每個構建不同的組件。 – 2010-04-09 14:02:50

1

因爲要引用matrix.cs項目,不只需使用AddExistigItem,爲該類創建一個新的參考。

66

你可以使用添加鏈接添加點擊小向下箭頭,添加按鈕的右鍵 - >現有項命令

(Thanks Peter)

雖然我意識到這不是對原始問題(關於最佳實踐)的回答,我提出這個答案是爲了節省由這個問題的誤導性標題引導到這裏的其他人的時間。

+2

迄今爲止最好的答案,所以這裏是你的+10代表! – 2012-04-23 18:16:54

+5

不是上述問題的最佳答案,而是我尋找的答案! – 2013-05-22 12:45:02

+0

自從它有版本號之前,我一直在Visual Studio中工作,而且我從未注意到此功能!謝謝! (注意@GrantWinney,我確認你的理論;這個問題在「如何將文件添加爲鏈接」方面排名很高,這就是我到這裏的原因。) – 2015-04-10 21:30:35

相關問題