0

我想使用自生成任务在 csproj 文件中设置 C# 项目的程序集版本。

我想将程序集版本设置为:

  Major Version -> Project version: for example 3

  Minor Version -> 0

  Build Number -> Year + Calendarweek

  Revision -> Current day of week

我的想法是下面的代码。但目前它不起作用。有什么想法我应该改变吗?

 <UsingTask TaskName="DetectAssemblyVersion" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
      <Result ParameterType="System.String" Output="true" />
    </ParameterGroup>
    <Task>
      <Code Type="Fragment" Language="cs">
        <![CDATA[
        string year = System.DateTime.Now.ToString("yy");
        
        int dayOfWeek = (int) System.DateTime.Now.DayOfWeek;
        
        System.Globalization.DateTimeFormatInfo dfi = System.Globalization.DateTimeFormatInfo.CurrentInfo;  
        System.Globalization.Calendar cal = dfi.Calendar;                                  
        string calendarWeek =         cal.GetWeekOfYear(System.DateTime.Now, dfi.CalendarWeekRule,
                                          dfi.FirstDayOfWeek).ToString();
                                          
                                          
        Result = "3.0." +  year + calendarWeek + "."+ dayOfWeek.ToString();
        Log.LogMessage(MessageImportance.High, "detect of current version: " + Result);
        ]]>
      </Code>
    </Task>
  </UsingTask>
  <Target Name="TestBuild" AfterTargets="Build">
    <DetectAssemblyVersion>
      <Output PropertyName="AssemblyVersion" TaskParameter="Result" />
    </DetectAssemblyVersion>
    <Message Importance="high" Text="new version: $(AssemblyVersion)" />

  </Target>
4

0 回答 0