2013-06-12 123 views
6

我有很多使用安裝程序交付給客戶的visual studio項目。安裝完成後,所有項目和解決方案文件應該是最新安裝的Visual Studio版本。有沒有什麼辦法可以快速轉換很多項目以編程方式升級Visual Studio解決方案和項目文件

我嘗試以下操作:

1)解析文件和更換喜歡ToolsVersion等,這是快,但不可靠的,應該改變每一個新的Visual Studio裏面說到市場(每年從現在不同性質據我所知)

2)使用devenv的升級功能,可靠的,但速度很慢:

string[] files = Directory.GetFiles(@"c:\MyTmp", "*.sln", SearchOption.AllDirectories); 
foreach (string file in files) 
{ 
    Process process = new Process(); 
    process.StartInfo.FileName = pathToTheLatestVS; 
    process.StartInfo.Arguments = "/Upgrade \"" + file + "\""; 
    process.Start(); 
    process.WaitForExit(); 
} 

3)嘗試創建VS的一個隱藏的實例和操縱從那裏解決方案描述here,但沒有運氣。

那麼有可能以快速可靠的方式將許多項目/解決方案文件升級到特定的Visual Studio版本?

+1

您可以使用兩個選項的組合。預先爲現有版本的Visual Studio準備項目文件,並安裝已準備好的文件。對於將來的版本,您可以使用第二種方法。 –

+0

@AlexButenko這不是一個選項,因爲有很多項目正在改變,我們確實支持來自VS 2005的客戶,所以我們必須保持5倍的項目文件。我的第二種方法是慢得令人無法接受的。 – VladL

+0

對我來說,它應該是一個選項,因爲基本上你所做的只是處理源代碼控制問題。您只需將客戶端安裝鏈接到某個版本的源代碼管理/生產blob,然後從那裏提取相關的解決方案和項目文件即可。 – rism

回答

2

讓我給你展示一個與你所呈現的2不同的視角。 升級速度緩慢的原因是,您嘗試升級的項目/解決方案會執行各種檢查。生成「升級報告」以提供關於這些檢查的反饋。這是不應忽視的信息,因爲它提供了有關上述問題的補救措施。

您聲明您通過安裝程序部署項目/解決方案。假設您有一個最新的開發團隊/工具,您可以將升級作爲安裝程序設計/開發的一部分來執行。爲什麼不自己執行升級,並將項目文件包含在安裝程序中。在安裝期間,您將安裝與目標平臺匹配的項目/解決方案文件的版本。

+0

是的,並在您的連續集成腳本中進行一夜之間的轉換。當然,你需要一臺安裝了所有Studio版本的機器,所以這將是一些初步的工作。這允許查看升級報告,例如每天早上在公司方面,在客戶方面失敗之前。 –

+0

正如我在評論中寫的,我們不想保留和保持比現有文件多5倍的文件。明年,由於新的Visual Studio將會增加一個。我們的項目非常簡單(爲我們的框架編寫樣本),並且在轉換過程中沒有任何問題,所以我們不需要升級報告。我想要實現的唯一的事情是客戶雙擊解決方案文件,並在最新的VS安裝中打開示例。 – VladL

+0

您提到第二個選項的速度慢得令人無法接受。我不知道項目的數量與解決方案的數量有關,但如果您有1個解決方案涵蓋所有項目,然後轉換1解決方案,那麼性能仍然不可接受?如果是這樣的話,那麼當他們真正開啓一個項目時,您可以讓客戶承擔即時升級的懲罰。 –

相關問題