2013-02-18 116 views
0

對不起,在這裏有一個沒有問題的問題......在Google和MS上花了一個小時幫助文檔,我的頭看起來是在錯誤的地方,我無法弄清楚這一點。在項目文件結構中包含引用

我有一個在Visual Studio 2012中設置的C#項目,它引用了我自己的硬盤驅動器(NetOffice .dlls是特定的,用於Excel Interop)的一些.dll文件。我一直通過右鍵點擊我的引用文件夾來添加它們,去添加引用,然後去瀏覽找到這些文件。在這一點上,他們包括在內,一切都如預期般運作。

當我分享項目時會出現問題。我正在使用Git來保持我和一些團隊成員之間的項目協調。我會執行我的承諾,並推動它,然後讓我的隊友做他的拉。一切正常顯示在他的電腦上,但是當我們打開項目時,它告訴我NetOffice.dll缺失。

我猜這是因爲這些文件只在我的計算機上本地鏈接,但我無法弄清楚,對於我的生活,如何使.dll文件結構中存在,以便他們當我推動它時,與項目一起旅行。

我們也有一些NuGet軟件包,我們也使用它們,它們似乎在傳輸後工作得很好。我也進入了NetOffice的.dll屬性,並將「複製本地」設置爲true,但它仍未包含在內。

我想要的是能夠鏈接引用,然後發送整個事情(包括DLL)給我的隊友,我做錯了什麼?我想我只想在項目結構中包含.dlls,但是......我只是不理解某些東西。請幫忙嗎?

+0

爲什麼這個問題downvoted ?? ??人們,如果你們低調,至少有禮貌來解釋倒行逆施! – Christian 2013-02-18 20:37:28

+0

因爲@克里斯蒂安顯然是我在發帖之前花了研究答案的最後四個小時沒有計算在內?閣下原諒我是新的,我猜...(對不起,有點不專業,但是要求一個誠實的問題,盡我所能,然後得到低估)更令人沮喪。) – 2013-02-18 20:40:09

+0

如果你有非公開的依賴性變化很大,可能值得考慮創建一個本地NuGet存儲庫。這樣開發人員就可以使用NuGet解決所需的依賴關係,並且從依賴項創建的二進制文件不必添加到源代碼管理中。如果依賴關係相當穩定,那麼將它們添加到源代碼控制通常不是問題。 – poke 2013-02-18 20:57:35

回答

2

1在與解決方案文件相同的級別在文件系統中創建一個文件夾。
2將外部dll複製到該文件夾​​。
3將解決方案文件夾添加到解決方案中。
4每個DLL添加到使用添加現有項目
5基準的DLL的溶液中

步驟3和4是不是真的有必要的解決方案文件夾,但它們有助於保持組織的事情。

+0

謝謝!出於某種原因,我早就解僱了這個想法。我想我最近有一個經驗,那樣做沒有幫助,因爲文件路徑不是相對的。這固定了它。 – 2013-02-18 20:37:23

1

儘管這不是很好的做法,包括在你的git倉庫的二進制文件,這樣做會解決你的問題。

快速修復可能是在您的存儲庫中明智的位置創建lib目錄(我不是C#開發人員,但Gama Felix的建議似乎是正確的)。

然後提交這些文件夾,並推送到服務器。

+0

是的,我要去做伽馬說的話,但我想知道,你會說最佳做法是什麼? – 2013-02-18 20:38:13

+0

更好的做法是使用某種包管理器。我的經驗主要是Java([Maven](http://maven.apache.org/))和Ruby([Bundler](http://gembundler.com/)),所以我不能給你一個可靠的建議對於C# - 儘管我認爲NuGet可能以類似的方式工作。從本質上講,你想要將你的代碼與它的依賴關係分開。 – 2013-02-18 20:45:01

+0

你應該調用'lib'文件夾,因爲'bin'dir包含了編譯時由Visual Studio生成的文件。 – poke 2013-02-18 20:46:30

1

讓我們假設你的源代碼控制的根文件夾名爲SourceRoot
和解決方案的文件是一個名爲JaySolutionFolder文件夾下
我喜歡:
添加一個新的文件夾到你的源代碼控制,SourceRoot下,所謂的SharedDlls
複製所有外部DLL到該文件夾​​。
添加這個dll引用形成SharedDlls到您的項目。
提交此文件夾
現在你的隊友必須得到JaySolutionFolder & SharedDlls來編譯源代碼。
稍後,這個SharedDlls可以成爲構建過程的目標目錄(使用像TFS Bulid,NANT或其他工具)
這將是一種最小化團隊開發問題的方法。
在釋放和軟件的安裝,你可以使用安裝軟件包建設者installshieldVisual Studio Setup Package或...解決外部DLL問題
合這有助於。

相關問題