在Jenkins构建中,“AssemblyInfo”MSBuild任务失败

时间:2012-11-30 16:46:43

标签: c# msbuild jenkins

我在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>

2 个答案:

答案 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;)]它会工作。