Hii,还有很多其他人已经发布过这么多关于此问题的问题.但这里的情况有所不同.
我需要提取前三个数字即.$(major).$(Minor).$(Build)从版本号.我怎么能这样做??我试过AssemblyInfoTask..but那个任务只是为了覆盖版本号.不提取版本号.
我需要提取前三个数字并将它们分配给某个属性.以供进一步使用.
好吧,我可以使用FileUpdatetask.like 覆盖它们::
<FileUpdate
Files="@(AssemblyFile)"
Regex='(\d+)\.(\d+)\.(\d+)\.(\d+)'
ReplacementText='$1.$2.$3.$(Revision)'>
</FileUpdate>
Run Code Online (Sandbox Code Playgroud)
现在我怎么能用他们的价值呢.$1,$2,$3分配给属性.???
感谢名单.
我们有一个每晚构建过程,自动版本化所有C++项目.这是它的工作原理.有一个通用的头文件VersionNumber.h,具有特定#define的版本号.nighly build检查此文件,增加后面的整数#define并将其检入.所有Visual C++项目#include都标题到其资源文件中并使用该定义来指定版本(版本很像1.0.3.ThatNumber).
到现在为止还挺好.现在,我想对在同一日常构建中构建的C#类库具有相同的功能.目前他们都有
[assembly: AssemblyVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)
在AssemblyInfo.cs文件和库中最终得到 1.0.HorribleNumber.AnotherHorribleNumber得到版本,这两个数字与C++项目使用的数字无关.
如何以最小的努力在我的C#项目中使用相同的清除自动版本编号?
我正在尝试使用C#正则表达式匹配版本号(Major.Minor.Build.Revision)的各个部分.但是,我对编写Regex很新,甚至使用Expresso也证明有点困难.现在,我有这个:
(?<Major>\d*)\.(?<Minor>\d*)\.(?<Build>\d*)\.(?<Revision>\d*)
Run Code Online (Sandbox Code Playgroud)
这有效,但要求版本号的每个部分都存在.我想做的还是匹配版本,如:
2.13
Run Code Online (Sandbox Code Playgroud)
在这种情况下,构建和修订组需要返回空值.如果我认为这一切都错了,请随意提出一个更好的方法.
我需要阅读AssemblyFileVersiondll而不仅仅是Version.我试过了:
<Target Name="RetrieveIdentities">
<GetAssemblyIdentity AssemblyFiles="some.dll">
<Output
TaskParameter="Assemblies"
ItemName="MyAssemblyIdentities"/>
</GetAssemblyIdentity>
<Message Text="%(MyAssemblyIdentities.FileVersion)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
该脚本运行但不输出任何内容.如果我改变FileVersion到Version它正确输出AssemblyVersion.我如何AssemblyFileVersion使用我的脚本?