【发布时间】:2017-04-23 23:22:01
【问题描述】:
我有一个包含多个项目的 Visual Studio 解决方案文件。
对于给定的解决方案配置,例如 Dev,很少有项目使用调试配置。我希望所有项目都使用 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"
有足够的空间来完善这个脚本。会检查的。
【问题讨论】:
-
替代方法是通过 Microsoft.Build.BuildEngine 编辑文件,参见例如stackoverflow.com/questions/7887538/…
-
@stijn - 在您给出的线程中讨论的答案现在已过时。我找到了另一个线程 [stackoverflow.com/questions/707107/…,其中有一个使用 VS 2015 的 Microsoft.Build.Construction.SolutionFile.Parse() 方法的新方法的答案。MSBuild 路径是 C:\Program Files (x86)\参考程序集\Microsoft\MSBuild\v14.0\Microsoft.Build.dll
-
我不确定它是否真的过时了?请注意,它用于更改 projects,您链接到的问题是关于 solutions。虽然对于您的情况,您可能需要两者。
标签: visual-studio msbuild configuration-files configurationmanager