我想以编程方式在生成时使用C#代码分配.NET Core程序集的版本号。
以下是我用来生成版本号的代码示例:
string vString = DateTime.UtcNow.ToString("yy.M.d.") + ((DateTime.UtcNow - DateTime.UtcNow.Date).TotalSeconds / 10).ToString("F0");
Version v = Version.Parse(vString);
现在,v
包含了我想要分配给程序集的版本。
我希望能够从C#代码执行此操作,以便可以执行所需的任意计算。这是另一个示例:
string major = DateTime.UtcNow.ToString("yyMM");
string minor_rev = (DateTime.UtcNow - DateTime.UtcNow.Date).TotalSeconds.ToString("F3");
string vString = major + "." + minor_rev;
Version v = Version.Parse(vString);
或者甚至可以从远程源检索当前版本号-从文件甚至从Web端点读取它。换句话说,我不想使用.NET内置的自动版本编号,并且简单的自动递增是不够的。
我所见过的最接近的功能可以是T4处理器,但它似乎是经典.NET Framework 4.x所特有的,并且仅在Windows上受支持(因为文本处理器是Windows EXE) )。无论我要编译.NET Core程序集的任何地方(Windows或Unix),我都需要使用它。
我完成的所有搜索都给出涉及T4的结果,或者要求将版本号传递到dotnet build
命令中。虽然我当然可以生产一个可以生成此版本号的自定义工具,然后以某种方式将其添加到CI构建主机,运行它并将其值导出到环境变量中,但是……您就明白了。至少不理想。