指定构建目录名称

时间:2015-04-08 09:10:20

标签: msbuild

我需要将项目构建到文件夹中:

\bin\Debug 1.0.3.4

1.0.3.4assembly: AssemblyVersion属性中指定的当前建筑装配版本 我尝试使用不同的变量,如$(AssemblyVersion)GetAssemblyIdentity任务,但没有运气..我不太擅长使用MSBuild。

1 个答案:

答案 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文件解析版本。