0

我有一個包含多個項目的Visual Studio解決方案文件。在Visual Studio解決方案文件中更新每個項目的Visual Studio項目配置

對於給定的解決方案配置,比如Dev,很少的項目使用Debug配置。我希望所有項目都能使用Dev配置進行Dev解決方案配置。

而不是使用配置管理器和更新每個項目的配置所有可能的平臺選項(x64,任何CPU,混合平臺),我希望能夠自動執行此操作。使用Configuration Manager爲所有項目的所有解決方案配置進行更新非常繁瑣。

因爲我有超過5個解決方案配置,並且解決方案中有20多個項目。

在記事本++中編輯解決方案文件將有助於我猜測。我還沒有嘗試過。但這是唯一的方法嗎?

更新:

我起草一個簡單的PS腳本來實現這一目標使用PowerShell來更新SLN文件,單個SLN配置。但尋找替代方法。

$content = Get-Content "E:\SlnFolder\SolutionFile.sln" | ForEach-Object { 

$line = $_ 

if ($line -match "(^\s*{[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+}.Dev\|[a-zA-Z0-9\.\s]+ =)([a-zA-Z\s]+)") 
{ 

$line -replace "(^\s*{[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+}.Dev\|[a-zA-Z0-9\.\s]+ =)([a-zA-Z\s]+)",'$1Dev' 

} 
else 
{ 
$line 
} 

} | Set-Content -Path "E:\SlnFolder\SolutionFile_Updated.sln" 

有足夠的空間來擦亮這個腳本。將檢查。

+1

方法是通過Microsoft.Build.BuildEngine編輯文件,例如見http://stackoverflow.com/questions/7887538/modify-programatically-csproj-files#8492560 – stijn

+0

@stijn - 在你提供的線索討論的答案現在已經過時。我找到了另一個線程[http://stackoverflow.com/questions/707107/parsing-visual-studio-solution-files]在哪裏有一個新的使用Microsoft.Build.Construction.SolutionFile.Parse( )方法。MSBuild路徑是C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ MSBuild \ v14.0 \ Microsoft.Build.dll –

+0

我不確定它是否真的過時了嗎?注意它是用來改變*項目*,你鏈接到的問題是關於*解決方案*。雖然對於你的情況你可能需要兩個。 – stijn

回答

0

是的,您可以使用SolutionFile.Parse方法檢索所有項目的AbsolutePath,您可以使用Microsoft.Build.Evaluation.Project類設置相關的屬性。就像這樣:

請添加擴展引用名爲Microsoft.Build

string solutionPath = @"D:\Project\Msbuild\App1\App1.sln"; 
var solutionFile = SolutionFile.Parse(solutionPath); 
foreach (var item in solutionFile.ProjectsInOrder) 
{ 
var project = ProjectCollection.GlobalProjectCollection.LoadProject(item.AbsolutePath); 
project.SetGlobalProperty("Configuration", "Debug"); 
project.Build(); 
} 
+0

很酷。我會盡快嘗試並更新! –

+0

@ Baskar,這個問題呢?你能從Cole的回覆中獲得有用的信息嗎?如果它對你有幫助,請記住標記爲答案:)祝你有美好的一天! –

+0

@ JackZhai-MSFT - 我希望能夠在不加載相應項目的情況下更新sln文件。這可能嗎? 基本上我正在尋找配置管理器的API。在Visual Studio中,我們可以打開Configuration Manager並更新sln配置的項目配置。如果我有15個項目和超過5或6個sln配置(如Dev,Test,Prod,UAT等),此選項非常單調乏味。尋找能夠直接使用配置管理器的API更新sln文件的方法。使用正則表達式我可以直接更新sln。但我依賴於API。 –

相關問題