我正在通过VSTS在云中构建。在这种情况下,我发布了一次点击应用程序并提供了MSBuild参数:
/target:publish
/property:PublishUrl=http://somurl.com/somepath/myapp.application
/property:ApplicationVersion="1.$(Year:yyyy).0.0"
我真的希望最后一个是:
/property:ApplicationVersion="1.$(Year:yyyy).$(DayOfYear).$(Build.BuildNumber)"
然而,除了硬编码字符串之外的任何东西都给了我:
C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets(3506,5):错误MSB3174:' AssemblyVersion'的值无效。
如果我使用硬编码版本号(例如" 1.0.9.99"),它可以正常工作。
答案 0 :(得分:2)
感谢所有评论我问题的人。它帮助我找到了一个我在这里提供的解决方案,以防它帮助其他人。
显然,在设置构建号格式时可以使用定义的here标记,然后通过传入$(Build.BuildNumber)在构建任务参数中使用。其他一些令牌可以用作任务参数,例如$(Rev:r),但其他如$(Year:yyyy)和$(DayOfYear)不能用作任务参数(尽管它们可用于设置构建数字格式)。
我从未尝试过传入$(Rev:r),因为我选择将我的内部版本号格式更改为有效的程序集版本号(之前没有)。我改成了:
1.$(Date:yyyy).$(Date:MMdd).$(Rev:r)
现在我将它作为参数传递给gulp脚本并使用gulp脚本来调用msbuild。有点费解,因为我可以直接调用msbuild,但我使用gulp进行其他操作,并且还有其他配置,否则我必须硬编码到msbuild任务的参数中,所以我选择保留它咽。
然后,使用gulp来调用msbuild,要求我知道msbuild的路径。测试msbuild任务向我展示了完整路径是什么,所以我可以将其添加到我的环境配置中(如果您有兴趣了解更多信息,请参阅npm config。)
答案 1 :(得分:1)
首先,您应该确保在构建定义选项中设置的构建号格式是可接受的格式,如W.X.Y.Z。
接下来,您可以在msbuild参数中传递内部版本号:
/property:ApplicationVersion="$(Build.BuildNumber)"
确保在双引号之间添加变量名称,否则您将继续收到相同的错误消息。