3

我在 Jenkins 上遇到了这个构建错误。我将不胜感激任何帮助寻找解决方案,甚至有人指出我正确的方向。

这是我得到的错误:

“D:\Jenkins\jobs*REDACTED*\workspace\CAPS.msbuild”(默认目标)(1)->(编译目标)-> 错误 MSB4018:“AssemblyInfo”任务意外失败。System.ArgumentException:版本参数名称:指定的字符串在 Microsoft.Build.BackEnd 的 Microsoft.Build.Extras.AssemblyInfo.Execute() 中的 Microsoft.Build.Extras.Version.ParseVersion(String version) 不是有效的版本号。 TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 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>
4

2 回答 2

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' 可以被换入并且仍然可以工作。

如果您每次都发布整个包,这可能并不重要,但您没有正确使用这些字段。

从另一个问题看到这个答案

于 2012-11-30T17:28:05.727 回答
1

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

于 2012-12-02T07:51:35.800 回答