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

3
我在Jenkins上遇到了构建错误。我希望能有人帮我找出解决方案,甚至只是指点一下方向。
这是我得到的错误信息:
"D:\Jenkins\jobs*REDACTED*\workspace\CAPS.msbuild" (default target) (1) -> (Compile target) -> error MSB4018: The "AssemblyInfo" task failed unexpectedly. System.ArgumentException: version Parameter name: The specified string is not a valid version number at Microsoft.Build.Extras.Version.ParseVersion(String version) at Microsoft.Build.Extras.AssemblyInfo.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext()
我已经确认 AssemblyInfo.cs 文件看起来都很好(就我所知),解决方案的 msbuild 文件也没有什么异常。
我已经搜索了我能想到的所有错误派生形式。
任何建议都将不胜感激。
从 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>

指定的字符串不是有效的版本号 - 你尝试写入了哪个版本号? - Anders Lindahl
已更新问题并提供了相关信息。 - Christopher Rayl
...并且 $(AssemblyVersion) 得到了预期的值?<Message Text="$(AssemblyVersion)"/> 可以展示给你。 - Anders Lindahl
我应该把这行代码放在哪里?输出结果在哪里可以看到? - Christopher Rayl
2个回答

4
我猜测您使用的VersionLabel变量无法解析,它试图将文字2.0.$(VersionLabel)写入AssemblyInfo文件。
一个附注:您将AssemblyVersion和AssemblyFileVersion设置为相同的数字,在强命名情况下,您将无法热交换DLLs。通常,AssemblyVersion应该是“2.0”,而您的AssemblyFileVersion应该是“2.0.13345.02”或您的编号方案是什么样子。这样在两周内构建的dll,它将有'2.0'和说'2.0.13352.01',仍然可以被替换并正常工作。
如果您每次都发布整个软件包,则可能不重要,但您没有正确使用这些字段。
请参阅此答案来自另一个问题。

1

这是任务中的一个错误,如果您将程序集信息中的 [assembly: AssemblyVersion("2.0.*")] 更改为版本号 [assembly: AssemblyVersion("2.0.0.0")],它就可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接