2014-03-24 49 views
2

在大約50-100個項目中創建構建配置的最簡單方法是什麼(相同的解決方案)如果Visual Studio已經從另一個項目中檢測到構建配置?將外部配置複製到Visual Studio中的本地項目?

我們的團隊在幾種解決方案中使用一組常用項目(命名空間簡單地是「Common」)。 Common命名空間擁有自己的主解決方案,並擁有自己的一套構建配置。 Common的解決方案包含五種構建配置(「Debug-QA」,「Debug-Dev」等)。

無論何時在新解決方案中使用這些項目(即「MyNewSolution」),Visual Studio都會顯示Common主解決方案的構建配置。不幸的是,這些配置還沒有在MyNewSolution或MyNewSolution的任何項目中創建。這會給將構建配置添加到其他項目或將這些項目包括在這些構建配置中時造成問題,因爲如果名稱已經存在(Visual Studio認爲它的確如此,則無法創建構建配置,這要歸功於Common項目被包括在內)。

我的目標是將相同的配置(即「Debug-QA」,「Debug-Dev」等)添加到MyNewSolution及其項目中,以便所有項目和解決方案相匹配。我能看到這樣做的唯一方法是在每個新項目上手動創建構建配置......自從MyNewSolution擁有大約50-100個項目以來,這是一種折磨。

FYI:我使用的Visual Studio 2012

回答

3

這更是一個比黑客一個妥善的解決辦法,但你總是:

  1. 創建整個配置的AA拷貝你想解決方案以GUID作爲其名稱。
  2. 從已經具有原始配置的項目中刪除副本(撤消更改)。
  3. 使用「在文件中查找/替換」工具將GUID重命名爲原始配置的名稱。

即使這不是一個非常可行的選擇,它是一個相當不錯的快速修復。

編輯:

如何手動從溶液中除去配置:

用文本編輯器打開該解決方案文件,你會看到一個名爲Global模塊包含部分。 SolutionConfigurationPlatforms部分包含配置的定義。還有一個名爲ProjectConfigurationPlatforms的部分,其中分配了配置。只需從兩個組中刪除對配置的引用即可。如果您有更復雜的解決方案,可能需要刪除其他參考。這只是一個基本情況。

如何從項目中手動刪除配置: 再次,通過在文本編輯器中打開項目文件,您將看到許多對要刪除的配置的引用。 C#項目將PropertyGroup作爲條件配置。您可以完全刪除該組。可能還有其他對文件周圍配置的引用,因此請確保正確地清理所有內容。

如果出現問題,請確保您有文件的備份。

+1

有超過15種不同的解決方案,這意味着我將不得不從所有解決方案中刪除配置。由於它們都是相互參照的,一旦我開始將配置添加回其中的任何一個,我是否會遇到同樣的問題?實際上,由於配置管理器沒有「刪除」功能,如何從其中任何一個刪除構建配置? –

+1

我已經添加了更多關於如何手動從解決方案和項目文件中刪除配置的詳細信息。如果您對MSBuild配置系統有足夠的瞭解,也可以用這種方式添加它們。 如果您有這麼多解決方案,那麼您總是可以創建一個新的解決方案,引用所有這15個解決方案中的所有受影響的項目。然後像我說的那樣簡單地在這個解決方案中添加新的配置。完成後,使用文本編輯器編輯解決方案文件,並將引用配置的行手動複製到所有15個解決方案中。 –

2

如果目標配置的項目級定製非常少,那麼通過MSBuild Import element導入到各個項目的外部配置進行管理可能最簡單。

爲了讓特定項目的覆蓋,這種進口應放在附近的項目文件的頂部。例如: -

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="..\..\CommonConfig.targets" Condition="Exists('..\..\CommonConfig.targets')" /> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 
    ... 

這不幸的是,需要您編輯所有項目文件一旦添加Import。但是,一旦完成,您就可以將配置添加到導入的.targets文件,並讓它自動傳播到所有項目。

2

我不能告訴你什麼工作最適合你,但我可以從經驗說,它變得非常容易從舊解空間50+項目,創造新的解決方案的空間時,你不要讓Visual Studio中寫項目文件。相反,您可以購買現成的第三方軟件,該軟件將讀取您提供的一些配置文件,並在幾秒鐘內提供所需的解決方案和所有項目,所有這些都按照您需要的方式進行配置。

當您只想編譯通用項目時,相同的軟件也會生成獨立的「通用」解決方案。

正確的軟件會給你的靈活性和力量是makefile文件,當你設置你的項目提供,但你仍然可以做你的工作在Visual Studio。

我在該角色中廣泛使用了CMake,但是對於C++而不是C#。我對CMake非常滿意;我已經在包含50多個項目的環境中使用它,它們的源代碼分散得如此之廣,以至於我使用腳本來查找所有這些項目,以及一些作爲預編譯的DLL或LIB引入的第三方庫。另外,從我所知道的經驗來看,沒有什麼能夠阻止某人同時維護自己手工製作的VS項目文件,如果他們真的想要的話,可以使用相同的源代碼。但是,當然您可能想要自己購買適合您環境的最佳軟件。

將幾十個項目從手工製作的項目文件轉換爲更加類似makefile的系統是一項重要的投資時間,但是在需要多次重新配置或重新組合項目的環境中,我感覺投資已付回相當快。

相關問題