2013-03-18 50 views
1

我有超過61個項目的解決方案。我可以在VS12/10中同時更改所有解決方案的項目輸出路徑嗎?

有3個目標平臺:「調試」,「版本」,「發佈平板電腦」
有2個解決方案平臺:「86」和「任何CPU」

我想所有的項目將被打造D:\ samplepath \ Debug \用於平臺'x86'和'任意CPU'上的'調試'配置
D:\ samplepath \ Release \用於所有平臺上的'Release'和'Release tablet'配置

是否有任何簡單的方法來管理所有這些路徑,而不是逐個設置它們(它是61x3x2 = 366路徑set!sic!)? 在此先感謝

回答

2

嘗試這樣的事情(我像這樣運行在LinqPad代碼,但如果你喜歡,你可以創建一個控制檯應用程序):

const string xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"; 
void Main() 
{ 
    var dir = @"C:\proj\catalyst\source"; 
    var xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"; 
    foreach(var configFile in Directory.EnumerateFiles(dir,"*.csproj",SearchOption.AllDirectories)) 
    {    
     var doc = XDocument.Load(configFile);    
     var paths = doc.Descendants(XName.Get("OutputPath",xmlns)); 
     foreach(var path in paths) 
     { 
      path.Value = "\"$(SolutionDir)$(ConfigurationName)\$(PlatformName)\""; 
     } 
     doc.Save(configFile); 
    } 
} 

這將您的輸出目錄的相對做出解決方案文件(儘管你可以用絕對路徑代替$(SolutionDir),如果你喜歡的話)。

+0

你應該儘可能地避免使用'$(SolutionDir)',因爲它會使你無法在Visual Studio之外使用MSBuild構建項目。而是使用相對於包含.csproj文件的文件夾的路徑。 – 2013-03-18 14:04:40

+0

如果您需要......您可以在MSBuild命令行上傳遞SolutionDir ... – jlew 2013-03-18 15:11:27

相關問題