首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Powershell中使用MSBuild库以编程方式确定活动解决方案构建配置

如何在Powershell中使用MSBuild库以编程方式确定活动解决方案构建配置
EN

Stack Overflow用户
提问于 2017-01-19 17:08:39
回答 1查看 1.4K关注 0票数 0

我正在编写一个Powershell脚本,该脚本从特定C#解决方案中的所有exe/dll项目中检索自定义元数据。

我的工作集中在使用Microsoft.MSBuild程序集(构建和评估名称空间)来解析解决方案文件并迭代项目以检索元数据。这一切都很好。

下一个愿望是只关注那些属于解决方案Active Build/Platform配置的项目--那些在Visual配置管理器中选中了Build位的项目。

虽然我能够收集项目构建配置属性的列表,但我很难找到解决方案文件如何存储活动解决方案构建和Active Platform配置所选值。

此外,我还审查了MSBuild库的源代码,它似乎使用字符串在项目和解决方案配置之间使用表达式匹配,例如:.Debug -Build CPU.ActiveCfg =Debug。

有人能说明我应该如何确定解决方案或项目的主动构建/平台配置吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-19 23:30:50

来自@stign的反馈让我的头脑朝着正确的方向前进。有点冗长,但它能满足我的需要

脚本伪代码如下:

代码语言:javascript
复制
Add-Type -Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\MSBuild\v14.0\Microsoft.Build.dll"

$slnFile = [Microsoft.Build.Construction.SolutionFile]::Parse("<path_to_solution>")

$slnFile.ProjectsInOrder | Where-Object { $_.ProjectType -eq "KnownToBeMSBuildFormat" } | % {

$outValue = $null
$found = $_.ProjectConfigurations.TryGetValue("Debug|Any CPU", [ref]$outValue)

    if($found)
    {
        if($outValue.IncludeInBuild) # This bit is set by the MS code when parsing the project configurations with ...Build.0
        {
          #Do stuff here
        }
    }
 } #End collection iterate
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41747700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档