如何在MSBUILD中指定版本控制程序集信息文件的解决方案文件位置

时间:2014-08-01 08:07:43

标签: msbuild tfs2010 tfsbuild msbuild-task assemblyversions

我一直在摆弄这一天,但没有运气。使用MSBUILD的程序集版本之前曾经工作过,但是最近我们已经将解决​​方案文件移动到项目的Root中的一个单独的文件夹中,从那时起版本控制就没有了。

以下是项目结构

代码文件夹

- > ProjectA文件夹

- > ProjectB文件夹

- > ProjectC文件夹

- >解决方案文件夹

*以前解决方案(.sln)文件位于Code文件夹下。

当我们运行MSBuild时,我收到以下警告。

  

未提供汇编信息文件

以下是构建日志的简化版本。

  

删除工作区

     

00:00删除源目录

     

00:00创建工作区

     

01:14获取工作区

     

00:00版本控制程序集

     <00> 00:00 AssemblyVersion和AssemblyFileVersion程序集版本   处理:使用构建定义中包含的版本号模式

     

00:00设置所有装配属性值(b)使用版本控制装配   以下模式:AssemblyVersion(1.0.0.0)和   AssemblyFileVersion(yyyy.mm.dd.b)没有汇编信息文件   提供

以下是生成上述日志的MSBuild任务。

  <local:VersionAssemblyInfoFiles 
    AssemblyFileVersionPattern="[AssemblyFileVersionPattern]" 
    AssemblyInfoFilePattern=" AssemblyInfoFilePattern]" 
    AssemblyVersionPattern="[AssemblyVersionPattern]" 
    BuildDirectory="[BuildDirectory]" BuildNumberPrefix=" 
   [BuildNumberPrefix]" BuildSettings="[BuildSettings]" 
    DisplayName="Versioning Assemblies" 
    DoCheckinAssemblyInfoFiles="[DoCheckinAssemblyInfoFiles]" 
    ForceCreateVersion="[ForceCreateVersion]" 
    sap:VirtualizedContainerService.HintSize="200,22" 
    mva:VisualBasic.Settings="Assembly references and imported namespaces 
   serialized as XML namespaces" UseVersionSeedFile="[UseVersionSeedFile]" 
   VersionSeedFilePath="[VersionSeedFilePath]" Workspace="[Workspace]" 
   xmlns:local="clr-namespace:TfsBuild.Versioning.Activities;
   assembly=TfsBuild.Versioning.Activities">

      <sap:WorkflowViewStateService.ViewState>
        <scg:Dictionary x:TypeArguments="x:String, x:Object">
          <x:Boolean x:Key="ShouldCollapseAll">False</x:Boolean>
          <x:Boolean x:Key="ShouldExpandAll">True</x:Boolean>
        </scg:Dictionary>
      </sap:WorkflowViewStateService.ViewState>
 </local:VersionAssemblyInfoFiles>

我还查看了建议here的解决方案,但没有运气。 有人可以指出我正确的方向吗?我不是MSBuild的专家。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我最终做了以下解决方法。 我们没有选择将所有解决方案移动到项目的根级别。

一个。创建一个新的解决方案,即SomeApp.Lib.Versioning.sln 此解决方案将位于根文件夹下,并且仅用于对其余项目进行版本控制。

湾SomeApp.Lib.Versioning.sln的项目(.csproj)将与其他项目处于同一级别。

所以新结构是

代码文件夹

- &GT; ProjectA文件夹

- &GT; ProjectB文件夹

- &GT; ProjectC文件夹

- &GT;解决方案文件夹

- &GT; SomeApp.Lib.Versioning.sln

- &GT; SomeApp.Lib.Versioning文件夹

℃。现在我从Solutions文件夹中的一个解决方案中引用SomeApp.Lib.Versioning.proj。这意味着SomeApp.Lib.Versioning.proj附加了两个解决方案。

d。显示构建版本的项目将使用类型,即SomeApp.Lib.Versioning.proj中的类文件

根据标准构建版本,SomeApp.Lib.Versioning.proj将具有正确的构建版本(SomeApp.Lib.Versioning.sln处于根级别)

说明: 这只是一种解决方案而不是理想的解决方案。这不是版本项目中所有程序集的版本。例如,如果我们想知道哪个程序集是在哪个版本中构建的,那么这不起作用。获得解决方案的构建版本只是占位符。