2009-09-20 263 views
0

場景:打開Visual Studio項目爲只讀

我使用SVN:外部組件從CodePlex上搶Microsoft.Practices.ServiceLocation。但是,在我自己的項目中引用csproj-file會導致從2005年到2008年的升級。這使得我的項目文件副本與基本副本不同,並且我無法從subversion更新項目。

的... \ DEPS \ Microsoft.Practices.ServiceLocation結果更新:

Command   Update 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocatorProvider.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocator.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\Readme.txt 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\Properties 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\Microsoft.Practices.ServiceLocation.csproj 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\IServiceLocator.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ActivationException.Desktop.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ActivationException.cs 
Completed  At revision: 43682 
warning!   One or more files are in a conflicted state. 

的......更新\ DEPS結果:

Command   Update 
Completed  At revision: 0 

的更新根結果:

Command   Update 
External   ...\deps\Microsoft.Practices.ServiceLocation 
External failed ...\deps\Microsoft.Practices.ServiceLocation 
Error    Working copy '...\deps\Microsoft.Practices.ServiceLocation' locked 
Error    Please execute the 'Cleanup' command. 
Completed   ...\deps\Microsoft.Practices.ServiceLocation - at revision: 0 

餐間聲稱工作拷貝已經被鎖定,似乎是錯誤的,執行發行鎖定Microsoft.Practices.ServiceLocation文件夾會生成一條消息,指出「沒有什麼可解鎖的。沒有文件在這個工作拷貝的鎖。」同樣的結果,如果我在根用戶身份執行命令。

執行清理什麼也沒有改變。

我使用TortoiseSVN。

  1. 我可以告訴Visual Studio 2008只能將項目/目錄視爲只讀以避免升級?
  2. 是否有一個祕密的Subversion命令可以執行此操作?
  3. 爲什麼更改了havnt的文件更新會導致樹衝突?

編輯︰ 我GOOGLE了一些,並發現Subversion文件解釋樹衝突在http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html。我改變了我的第三個問題,因爲我不明白爲什麼我在更新已更改的文件時遇到樹衝突。

回答

1

Visual Studio 2008將非常高興地打開只讀解決方案(這是正常的,未檢出的使用情況)。

但VS2008無法打開VS 2005解決方案文件,因此它總是嘗試升級。您似乎正在尋找一種方法,在未進行升級的情況下於2008年打開2005年解決方案,我認爲這不可能。

要麼獲得VS 2005的副本(這可能是Express版本),要麼整個升級Codeplex項目(記住VS 2008將以.NET 2.0爲目標)。

+0

如果我要安裝Visual Studio 2005(非快車),將其整合到同一個環境,讓我打開項目,而不升級? (就像有兩個「項目引擎」活躍在相同的devenv.exe進程?) – sisve 2009-09-20 15:30:04

+0

我不知道SNV整合,但每個並排VS的端版本都有自己單獨的配置(如使用Team Foundation客戶端,有是每個VS版本的獨立客戶端安裝)。 – Richard 2009-09-20 16:41:24

2

根據您對項目的參與程度以及是否要更改項目有幾種選擇。

對於我主要用於圖書館的項目,我沒有將開放源代碼項目放入我的解決方案 - 只是我在源文件夾中的源代碼管理存儲庫中保存的dll。

當您正在調試時,您可以在VS2008中進入庫的代碼而無需實際打開2005項目文件;所以不需要更新。

當我確實需要處理開源庫的代碼時,我打開它自己的解決方案。如果它需要更新到VS2008,我會讓它 - 這是沒有什麼大不了的,因爲只有項目文件被更改 - 而不是源代碼。由於它在源代碼控制中,因此您可以始終將項目文件還原爲原始文件或重命名新的副本並將2個csproj文件並排保存。

我只能做一個svn更新與開源項目龜沒有得到衝突。 Svn會將所有更改合併到我的副本中。如果我有開源項目所需的更改,我會提交一個補丁並且不要從我的副本提交。

如果這是一個項目,你是一個活躍的開發者和其他團隊成員需要留在VS2005,那麼你可以加載VS2005並排沒有問題。我在同一臺機器上安裝了4-5份VS - 唯一的缺點是磁盤空間。

這聽起來像你可能需要做項目的重新檢出到一個新的文件夾,如果你有太多的衝突。然後你可以使用一個好的差異工具手動解決衝突 - 我使用WinMerge。