我有一个属性组,如下所示:
<PropertyGroup>
<Platform>Win32;x64</Platform>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
我想在Exec任务中批处理,如下所示:
<Exec Command='devenv MySolution.sln /Build "Release|%(Platform)"' />
Run Code Online (Sandbox Code Playgroud)
但是,当然,正如我写的那样我得到一个错误:
error MSB4095: The item metadata %(Platform) is being referenced without an item name. Specify the item name by using %(itemname.Platform).
Run Code Online (Sandbox Code Playgroud)
我可以在列表属性上批处理任务吗?我想我可以通过创建一个包含元数据和批处理的占位符ItemGroup来破解它.
Say*_*imi 13
由于您的属性由a分隔,;您可以直接从中创建项目,然后从中批处理.例如.
<Project ToolsVersion="3.5" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Platform>Win32;x64</Platform>
</PropertyGroup>
<Target Name="Demo">
<ItemGroup>
<_PlatFormItem Include="$(Platform)"/>
</ItemGroup>
<Message Text="Platform: $(Platform)"/>
<Message Text="_PlatFormItem: @(_PlatFormItem)"/>
<Message Text="Platform.Identity: %(_PlatFormItem.Identity)"/>
<Exec Command='devenv MySolution.sln /Build "Release|%(_PlatFormItem.Identity)"' />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
这里我正在批处理使用,%(_PlatformItem.Identity)因为Identity具有值(Win32和x64).
| 归档时间: |
|
| 查看次数: |
1922 次 |
| 最近记录: |