我在Jenkins上遇到这个构建错误。我很感激任何寻求解决方案的帮助,甚至有人指出我的方向正确。
这是我得到的错误:
“D:\ Jenkins \ jobs *已删除* \ workspace \ CAPS.msbuild”(默认目标) (1) - > (编译目标) - >错误MSB4018:“AssemblyInfo”任务 意外失败了。 System.ArgumentException:version参数 name:指定的字符串不是有效的版本号 Microsoft.Build.Extras.Version.ParseVersion(String version)at Microsoft.Build.Extras.AssemblyInfo.Execute()at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext()
我已经验证了AssemblyInfo.cs文件看起来都很好(据我所知)并且对于解决方案的msbuild文件似乎没有任何结果。
我已经用Google搜索了我能想到的错误的所有衍生物。
任何建议都将受到赞赏。
评论回复:
从AssemblyInfo.cs文件:
[assembly: AssemblyVersion("2.0.*")]
来自msbuild文件:
<PropertyGroup>
<ProjectName>CAPS</ProjectName>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<VersionLabel Condition=" '$(VersionLabel)' == '' ">0.0</VersionLabel>
<AssemblyVersion>2.0.$(VersionLabel)</AssemblyVersion>
</PropertyGroup>
这也可能是相关的:
<Target Name="Compile">
<ItemGroup>
<UpdateFiles Include="**\AssemblyInfo.cs" Exclude="**\.svn\**" />
</ItemGroup>
<AssemblyInfo AssemblyInfoFiles="@(UpdateFiles)" AssemblyVersion="$(AssemblyVersion)" AssemblyFileVersion="$(AssemblyVersion)"/>
<MSBuild Projects="$(ProjectName).sln" Properties="Configuration=$(Configuration);RunCodeAnalysis=true" />
</Target>
答案 0 :(得分:4)
我的猜测是你对VersionLabel变量的使用没有解决,它试图将文字2.0。$(VersionLabel)写入AssemblyInfo文件。
一方面注意:您正在将AssemblyVersion和AssemblyFileVersion设置为相同的数字,在强名称情况下,您将无法热插拔Dll。通常AssemblyVersion将为“2.0”,而AssemblyFileVersion将为“2.0.13345.02”或您的编号方案。这样一个在2周内构建的dll可以换成“2.0”并说“2.0.13352.01”,可以换入并且仍然有效。
如果您每次发布整个软件包可能不重要,但您没有正确使用这些字段。
从另一个问题
中查看此answer答案 1 :(得分:1)
如果您将程序集信息中的[assembly:AssemblyVersion(&#34; 2.0。*&#34;)]更改为版本号[assembly:AssemblyVersion(&#34; 2.0),则该任务中存在错误.0.0&#34;)]它会工作。