如何在 MSBuild 中获取扩展名(不带点)

2024-04-27

我有一个 ItemGroup,并在 MSBuild 项目中使用其元数据作为标识符进行批处理。例如:

        <BuildStep
          TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
          BuildUri="$(BuildUri)"
          Name="RunUnitTestsStep-%(TestSuite.Filename)-%(TestSuite.Extension)"
          Message=" - Unit Tests: %(TestSuite.Filename): %(TestSuite.Extension)">

          <Output
            TaskParameter="Id"
            PropertyName="RunUnitTestsStepId-%(TestSuite.Filename)-%(TestSuite.Extension)" />
        </BuildStep>

但是,这不起作用,因为扩展中有一个点,它对于 Id 来说是无效字符(在 BuildStep 任务中)。因此,MSBuild 在 BuildStep 任务上总是失败。

我一直在尝试删除这个点,但没有成功。也许有一种方法可以将一些元数据添加到现有的 ItemGroup 中?理想情况下,我想要类似 %(TestSuite.ExtensionWithoutDot) 的内容。我怎样才能做到这一点?


我想你对什么有点困惑<Output>元素在这里做的事情 - 它将创建一个以 PropertyName 属性中的值命名的属性,并将设置value该属性的值为 Id 的值output来自 BuildStep 任务。您对 Id 的值没有影响 - 您只需将其存储在属性中以供以后参考,以便设置构建步骤的状态

考虑到这一点,我不明白为什么您担心创建的属性的名称将包含扩展的串联。只要属性名称是唯一的,您就可以在后续的 BuildStep 任务中引用它,并且我认为您的测试套件文件名足以表明唯一性。

事实上,如果您进行目标批处理,则可以避免创建跟踪每个测试套件/构建步骤对的唯一属性:

<Target Name="Build"
        Inputs="@(TestSuite)"
        Outputs="%(Identity).Dummy">
    <!--
    Note that even though it looks like we have the entire TestSuite itemgroup here,
    We will only have ONE - ie we will execute this target *foreach* item in the group
    See http://beaucrawford.net/post/MSBuild-Batching.aspx
    -->


    <BuildStep
          TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
          BuildUri="$(BuildUri)"
          Name="RunUnitTestsStep-%(TestSuite.Filename)-%(TestSuite.Extension)"
          Message=" - Unit Tests: %(TestSuite.Filename): %(TestSuite.Extension)">

          <Output
            TaskParameter="Id"
            PropertyName="TestStepId" />
        </BuildStep>

    <!--
    ..Do some stuff here..
    -->

    <BuildStep Condition=" Evaluate Success Condition Here "
           TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
           BuildUri="$(BuildUri)"
           Id="$(TestStepId)"
           Status="Succeeded" />
    <BuildStep Condition=" Evaluate Failed Condition Here "
           TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
           BuildUri="$(BuildUri)"
           Id="$(TestStepId)"
           Status="Failed" />
</Target>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 MSBuild 中获取扩展名(不带点) 的相关文章

随机推荐

  • C# 控制台应用程序上的退出按钮 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 大家好 我敢打赌我真的很蠢 你能帮我消除这些错误吗 抱歉 我是一名刚刚学习 C 的学生 我需要声明任何变量来纠正逻辑吗 void Windo
  • 位运算 (C++)

    最近面试时遇到一个问题 我被要求比较按位运算的性能 比如 简单描述一下不同位操作的性能 我想这个问题可能非常普遍并且非常特定于机器 但我也认为应该有一些关于这个的一般规则 你必须提到 我没有 那么 你会回答什么 我可能还应该说 比较它们在
  • 使用 javascript 过滤二维数组

    我有一个 2D 数组 我需要过滤具有日期字段 3d 列 的行 var data 1 a 12 12 2019 A 2 b A 3 c 12 1 2019 A 4 d A 预期结果是 result 1 a 12 12 2019 A 3 c 1
  • 用于迭代数据帧行以进行谷歌地图距离查询的 R 代码

    我正在寻求一些帮助 编写一些 R 代码来迭代数据帧中的行 并将每行中的值传递给函数 并将输出打印到 excel 文件 txt 文件或仅在控制台中 这样做的目的是使用此网站上的功能自动对谷歌地图进行一系列距离 时间查询 数百个 http ww
  • 僵尸:使用集成菜单归档失败

    当我尝试直接使用 Xcode 菜单存档项目时 产品 档案 效果很好 但是当我尝试从集成菜单 机器人 执行它时 我收到此错误 构建操作失败 没有指定任何错误 个人打造 任务可能因未知原因而失败 一个可能的原因是如果 有太多 可能是僵尸 进程
  • window.resolveLocalFileSystemURL 与 window.requestFileSystem

    使用上有什么区别window resolveLocalFileSystemURL vs window requestFileSystem使用 cordova 文件插件下载文件时 我找不到有关resolveLocalFileSystemURL
  • 为什么 Decimal.MaxValue - 0.5 的结果是整数?

    今天我在玩小数 我注意到这一点 Decimal MaxValue 79228162514264337593543950335 Decimal MaxValue 0 5m 79228162514264337593543950334 以下代码打
  • 为什么 rust 'pub fn func(&'a mut self)' 在运行后被认为是“可变借用”?

    tl dr given pub fn func a mut self 为什么是self被认为是 可变借用 after func已经跑了 给出以下最小可行示例 pub struct Struct1 lt a gt var a u8 impl
  • 使用 VBScript 检查排序顺序

    假设我有一个数组 arr1 其中包含日期值 如下所示 Arr1 50 9 3 2012 4 57 02 AM 22 3 2012 5 57 02 AM 9 5 2012 8 57 02 AM 9 3 2011 4 57 02 上午 Edit
  • AJAX/JQUERY - 拆分返回的数据并放置在两个单独的 div 中

    我目前正在使用以下代码每 10 秒运行一次 AJAX 查询来填充 div div setInterval function ajax url ajax php type GET cache false done function html
  • 如何让 Ruby 的 Find.find 遵循符号链接?

    我有一个文件层次结构 一些子目录是相对符号链接 我在用Ruby s Find find http apidock com ruby Find爬行这些目录并找到一些特定的文件 但是 它不会查找任何符号链接的目录 它遵循符号链接的文件 看着源代
  • 如何在 helm 中使用 --wait 和安装后钩子?

    我在安装后挂钩中使用安装脚本 当我使用 wait 选项运行 helm install 时 helm 会等待所有 pod 准备就绪 但 helm 不会启动安装后挂钩脚本 然后 pod 尚未准备好 pod 正在等待安装脚本完成 我尝试使用预安装
  • Github Pages 网站图标未显示

    我正在使用 Github Pages 托管一个网站 由于 SSL 我将 Cloudflare 连接到该网站 当我最后添加时favicon ico到我的网站和以下代码使图标显示出来 它仍然不显示 我能做些什么 英语不是我的母语 Edit 似乎
  • 类型提示中 _ 的正确术语是什么?

    在 Rust 的类型提示中 可以在注释中使用部分类型 如下所示 let myvec Vec lt gt vec 1 2 3 部分类型注释中下划线的正确术语是什么 我对 Rust 术语以及更多学术类型理论术语感兴趣 我找到了一个一份官方文件
  • 我可以在 WPF 中使用 InputBindings 启用 PreviewClick 吗?

    我想检测用户何时单击列表视图上的项目 而不像我执行命令绑定那样使用事件 并且我不喜欢所有无意义的行为 我已经尝试过这个
  • 有什么办法可以修复这种类型推导吗?

    对于以下情况 类型推导失败 如果我为 someFunc 指定模板参数 它就会编译 我确实明白这是一个奇怪的情况 但如果我能让它发挥作用那就太好了 是否有另一种方法可以在不提供模板参数的情况下进行编译 C 17 解决方案就可以了 includ
  • SWRevealViewController 右侧菜单

    我正在尝试将 UITableView 插入第一个示例的 RightViewController 中 该示例位于https github com John Lluch SWRevealViewController tree master Re
  • Maui 类库无法编译 Android(无 Android 命名空间)

    我正在尝试创建一个具有平台相关部分的毛伊岛类库 在 Android 类库的平台部分中 我添加了 Android 代码 但是当我编译时 它告诉我它找不到 Android 命名空间 我已经对照编译 Android 的主程序检查了 Nuget 包
  • Docker Engine可以并行启动容器吗

    如果我有并行发出 docker run 命令的脚本 则 docker 引擎似乎会串行处理这些命令 由于使用 docker run 运行最小的容器映像需要大约 100 毫秒才能启动 这是否意味着并行发出命令来运行 1000 个容器将花费 do
  • 如何在 MSBuild 中获取扩展名(不带点)

    我有一个 ItemGroup 并在 MSBuild 项目中使用其元数据作为标识符进行批处理 例如