0

我已经摆弄了一天,但没有运气。使用 MSBUILD 的程序集版本控制以前可以工作,但最近我们已将解决方案文件移动到项目根目录内的单独文件夹中,从那时起版本控制一直没有工作。

下面是项目结构

代码文件夹

-> ProjectA 文件夹

-> ProjectB 文件夹

-> ProjectC 文件夹

-> 解决方案文件夹

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

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

未提供装配信息文件

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

删除工作区

00:00 删除源目录

00:00 创建工作区

01:14 获取工作区

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>

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

提前致谢。

4

1 回答 1

0

我最终做了以下解决方法。我们无法将所有解决方案移至项目的根级别。

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

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

所以新的结构是

代码文件夹

-> ProjectA 文件夹

-> ProjectB 文件夹

-> ProjectC 文件夹

-> 解决方案文件夹

-> SomeApp.Lib.Versioning.sln

-> SomeApp.Lib.Versioning 文件夹

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

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

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

备注:这只是一种变通方法,而不是理想的解决方案。这不会对项目中的所有程序集进行版本控制。例如,如果我们想知道哪个程序集是在哪个版本中构建的,这是行不通的。它只是获取解决方案构建版本的占位符。

于 2014-08-06T06:43:33.037 回答