2013-10-10 104 views
0

我們有一個大項目(解決方案),使用一些常用程序集(無GAC)的幾個較小項目。每當項目發生變化並且必須進行測試時,解決方案中的所有文件都必須部署在與主分支不同的測試位置。 我只想部署已更改的文件並使用未從主分支更改的文件。事情是這樣的:項目管理(各種)

[MainBranchFolder]

  • File1.dll
  • File2.dll
  • File3.dll
  • .....

  • [Branch1的子文件夾]

    • File2.dll

所以,分支1只包含File2.dll。程序運行時,它會查找當前文件夾中的任何dll,如果找不到,則會查看父文件夾。 我知道這個問題的解決方案,需要一些代碼的變化,但我不知道這樣的事情是否可以實現使用配置只有

[編輯]我看到幾個脂肪酶建議一些源代碼管理。然而,這不是一個源代碼問題,這是一個二進制代碼問題。我的例子中的MainBranch不是源代碼,是在我的項目中包含所有已編譯程序集(exe和dll)的文件夾

+0

主分支是什麼意思? – ilansch

+0

源代碼管理? – spender

回答

1

聽起來您可以使用某些軟件配置管理(SCM)!

這裏有很多選擇,一個快速的谷歌搜索將顯示出很多。我的首選是GIT。

退房:http://git-scm.com/

1

與團隊Foundataion服務器,你可以做到這一點的定製版本。

0

所有的迴應似乎都有一個Code Versioning主題,我看到的並不是您要找的內容。

我跑進一個不同的,但有可能類似的情況:

3應用中,每個需要相同librar(一個或多個)。 發佈主應用程序需要更新其他2個應用程序。 GAC不是一種選擇


方案1(不要問!):我知道它在哪裏,只要給我該死的東西! (這也讓我存儲了主安裝程序所規定的各種有用的常用設置。)


我的解決辦法是保持一個已知的註冊表項:

第1部分:註冊表項

HKLM \ SOFTWARE \ FoobarInternational \ CommonLibrary1 [字符串]

在CommonLibrary1我存儲了通用DLL的路徑。

第2部分:常見的「找到我的DLL」庫

想想插件架構 - 它會在當前目錄下的DLL爲,如果失敗,檢查正確的位置所提供的註冊表項。


解決方案2:以散步


以類似的方式,以溶液1,在其當前目錄庫開始,看上去爲DLL,並且如果其沒有找到,檢查1目錄更高。


這裏有幾個環節,以幫助你與每個:

,或者根據。你需要什麼。 。

string directoryName = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName; 
+0

謝謝,雖然我仍然希望能找到更多面向配置的解決方案,但不需要或只需要最少的代碼。這對我來說似乎需要一些實質性的編碼,不是那麼困難或那麼大,但它影響了作爲我們項目基礎的很少變化的部分 – user628661