我需要将项目构建到文件夹中:
\bin\Debug 1.0.3.4
1.0.3.4
是assembly: AssemblyVersion
属性中指定的当前建筑装配版本
我尝试使用不同的变量,如$(AssemblyVersion)
,GetAssemblyIdentity
任务,但没有运气..我不太擅长使用MSBuild。
答案 0 :(得分:0)
快速而肮脏的解决方案是在构建之后,使用GetAssemblyIdentity
提取版本信息,然后将$(TargetFile)
移动到相应的目录。< / p>
这假设您没有任何依赖关系。否则,您需要修改$(TargetPath)
,$(TargetName)
和$(TargetExt)
,或者使用&#34;正确的&#34;这样做的方式 - 动态修改$(OutputPath)
。
<Target Name="AfterBuild" AfterTargets="Build">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="AssemblyIdentity"/>
</GetAssemblyIdentity>
<PropertyGroup>
<Version>@(AssemblyIdentity->'%(Version)')</Version>
</PropertyGroup>
<Copy SourceFiles="$(TargetPath)" DestinationFolder="$(OutDir)$(Version)" />
</Target>
正确的方法是修改$(OutDir)
又名$(OutputPath)
,但这会涉及修改AssemblyVersion.cs文件(或者更复杂的是,它的副本自动注入构建链)
您也可以从AssemblyVersion.cs文件解析版本。