下面是我正在处理的MSBuild文件的一部分:
<ItemGroup>
<Tests Include="$(SolutionDir)\**\bin\$(TestPlatform)\$(Configuration)\*.Tests.dll" />
</ItemGroup>
<PropertyGroup>
<TestProperties>/testcontainer:%(Tests.FullPath)</TestProperties>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
我想拥有一个包含命令行开关的属性.但是,当我尝试$(TestProperties)在Exec命令字符串中使用时,%(Tests.FullPath)永远不会解析为测试项的绝对路径.相反,它总是按字面意思处理,如"%(Tests.FullPath)".
我做错了什么或这是一个标准的MSBuild行为?如果是后者,我有办法解决这个问题吗?
谢谢
PS - 我意识到我可能不需要访问FullPath属性,因为我的Include值是绝对路径.但是,我仍然想了解这个问题,以及如何处理它.
您有语法错误.项目列表通过@字符引用,项目元数据通过%引用.引用的MSBuild特殊字符参考的详细信息.要访问众所周知的项元数据,您需要在Property本身内部应用转换.
<ItemGroup>
<Tests Include="MyFile.txt" />
</ItemGroup>
<PropertyGroup>
<TestProperties>/testcontainer:@(Tests->'%(FullPath)')</TestProperties>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到更多帮助
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |