如何从MSBuild自动递增程序集或程序集文件版本?

如何从MSBuild自动递增程序集或程序集文件版本?,msbuild,t4,Msbuild,T4,制约因素包括: 使用Visual Studio 2017。 最终需要从调用MSBuild的powershell脚本调用 不确定其相关性,但需要能够构建以下内容: asp.net 461 asp.net核心1.1和2.0程序集 迄今为止未成功的尝试: 您是否有意标记“asp.NETCore”?如果您使用的是asp.net core,则您已经有了一个项目系统,该系统可以基于msbuild值生成程序集信息文件,这些值可以通过命令行传递,也可以从项目文件中的日期和时间开始计算。它需要能够生成asp

制约因素包括: 使用Visual Studio 2017。 最终需要从调用MSBuild的powershell脚本调用

不确定其相关性,但需要能够构建以下内容:

  • asp.net 461
  • asp.net核心1.1和2.0程序集
迄今为止未成功的尝试:


  • 您是否有意标记“asp.NETCore”?如果您使用的是asp.net core,则您已经有了一个项目系统,该系统可以基于msbuild值生成程序集信息文件,这些值可以通过命令行传递,也可以从项目文件中的日期和时间开始计算。它需要能够生成asp.net 461程序集以及asp.net-core 1.1和2.0。我以前从标题中编辑了asp.net-core,它也将删除标记。因此,您的asp.net core项目将已经支持-
    msbuild/p:Version=1.2.3.4
    将设置程序集版本,我建议您基于基于sdk的项目创建经典项目的“polyfill目标”。现在没有时间做,但可能在接下来的几天。我会表现得像,谢谢你。我已经在使用powershell调用
    msbuild
    ,因此
    msbuild/p:Version=1.2.3.4
    工作正常。它解决了我的实际问题,但必须禁用t4模板的自动增量解决方案才能工作。如果知道一种无论从何处构建都有效的方法,那就太好了。。尽管如此,谢谢!您正在使用哪个MSBuild?位于С:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin?
    <#@ template language="C#" #>
    
    using System.Reflection;
    
    [assembly: AssemblyVersion("1.0.0.*")]
    [assembly: AssemblyFileVersion("<#= this.Year #>.<#= this.Month #>.<#= this.Day #>.<#= this.Minute #>")]
    <#+
        int Year = DateTime.UtcNow.Year;
        int Month = DateTime.UtcNow.Month;
        int Day = DateTime.UtcNow.Day;
        int Minute = unchecked((int)DateTime.UtcNow.TimeOfDay.TotalMinutes);
    #>
    
    <Import Project="...hardcoded...\Microsoft.CSharp.targets" />
    <!-- This is the important line: -->  
    <Import Project="...hardcoded...\TextTemplating\Microsoft.TextTemplating.targets" />
    
    <PropertyGroup>  
        <TransformOnBuild>true</TransformOnBuild>  
        <OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
        <TransformOutOfDateOnly>false</TransformOutOfDateOnly>
    </PropertyGroup>