我一直在摆弄这一天,但没有运气。使用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的专家。
提前致谢。
答案 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处于根级别)
说明: 这只是一种解决方案而不是理想的解决方案。这不是版本项目中所有程序集的版本。例如,如果我们想知道哪个程序集是在哪个版本中构建的,那么这不起作用。获得解决方案的构建版本只是占位符。