我有一个项目,它有一组项目上下文(为了简洁起见省略了完整的属性组):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v82_Release|x64' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v90_Release|x64' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v90_Debug|x64' ">引用的程序集因配置变量开头的版本号而不同,因此我打开VS生成的csproj文件并编辑引用(为简洁起见省略的父Reference项):
<HintPath>Lib\$(Configuration.Substring(0,3))\Assembly1.dll</HintPath>
<HintPath>Lib\$(Configuration.Substring(0,3))\Assembly2.dll</HintPath>
<HintPath>Lib\$(Configuration.Substring(0,3))\Assembly3.dll</HintPath>这是可行的,但是是否有一种方法可以有效地定义$(LibVersionNum) = $(Configuration.Substring(0,3)),从而清理我的语法?
发布于 2014-12-03 18:31:33
试试这个:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration>v82_Release</Configuration>
<Platform>x64</Platform>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v82_Release|x64' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v90_Release|x64' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v90_Debug|x64' ">
</PropertyGroup>
<PropertyGroup>
<LibVersionNum>$(Configuration.Substring(0,3))</LibVersionNum>
</PropertyGroup>
<ItemGroup>
<MyItem Include="Ref1">
<HintPath>Lib\$(LibVersionNum)\Assembly1.dll</HintPath>
</MyItem>
<MyItem Include="Ref2">
<HintPath>Lib\$(LibVersionNum)\Assembly2.dll</HintPath>
</MyItem>
<MyItem Include="Ref3">
<HintPath>Lib\$(LibVersionNum)\Assembly3.dll</HintPath>
</MyItem>
</ItemGroup>
<Target Name="Build">
<Message Text="Current Config: $(Configuration)"/>
<Message Text="%(MyItem.Identity): %(MyItem.HintPath)"/>
</Target>
</Project>https://stackoverflow.com/questions/27278270
复制相似问题