簡體   English   中英

.Net Core msbuild build.proj 相當於 AssemblyInfo

[英].Net Core msbuild build.proj equivilent of AssemblyInfo

我正在將一個項目從 AspNet Mvc 4 升級到 AspNet Core Mvc 2.2; 我正在嘗試遷移 msbuild build.proj 文件以為創建 dll 的項目設置版本和其他屬性; 除 GenerateAssemblyInfo 任務外,一切正常。 在 netcoreapp2.2 中是否有新的方法可以做到這一點?

    <?xml version="1.0" encoding="utf-8"?>
       <Project ToolsVersion="15.0"  xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="GetRevisionInfo" BeforeTargets="Build">
    <GitPendingChanges ContinueOnError="WarnAndContinue">
      <Output TaskParameter="HasPendingChanges" PropertyName="HasPendingChanges" />
    </GitPendingChanges>
    <!--This will throw git Error 128 if there are no Tags -->
    <GitDescribe SoftErrorMode="true" Lightweight="true" ContinueOnError="WarnAndContinue">
      <Output TaskParameter="Tag" PropertyName="Tag" />
      <Output TaskParameter="CommitCount" PropertyName="CommitCount" />
      <Output TaskParameter="CommitHash" PropertyName="CommitHash" />
    </GitDescribe>
    <GitBranch ContinueOnError="WarnAndContinue">
      <Output TaskParameter="Branch" PropertyName="Branch" />
    </GitBranch>
    <PropertyGroup>
      <ShortCommitHash Condition="'$(CommitHash)' != ''">$(CommitHash.Substring(0,6))</ShortCommitHash>
      <ReleaseType Condition="'$(CommitCount)' != '' AND '$(CommitCount)' != '0'">Beta</ReleaseType>
      <ReleaseType Condition="'$(Branch)' != '' AND '$(Branch)' != 'master'">Alpha</ReleaseType>
    </PropertyGroup>
  </Target>

  <!-- Error out if this is a release and our working copy has uncommitted changes -->
  <Target Name="CheckRelease" AfterTargets="GetRevisionInfo" Condition="'$(Configuration)' == 'Release'">
    <Error Text="Cannot build a Release Version when there are uncommitted changes, commit or revert all changes." Condition="'$(CommitHash)' != '' AND '$(HasPendingChanges)' == 'True'" />
  </Target>

  <!-- Generates AssemblyInfo file using Git Describe -->
  <Target Name="GenerateAssemblyInfo" AfterTargets="CheckRelease" Condition="'$(CommitHash)' != ''">
    <Time>
      <Output TaskParameter="Year" PropertyName="Year" />
    </Time>
    <AssemblyInfo
      CodeLanguage="CS"
      OutputFile="$(MSBuildProjectDirectory)\Properties\AssemblyInfo.cs"
      AssemblyProduct="$(MSBuildProjectName) $(ReleaseType)"
      AssemblyCompany="xxx xxx xxx, LLC"
      AssemblyCopyright="Copyright © $(Year) xxx xxx xxx, LLC. All rights reserved."
      AssemblyConfiguration="$(Configuration)-$(Platform)"
      AssemblyVersion="$(Tag).$(CommitCount)"
      AssemblyFileVersion="$(Tag).$(CommitCount)"
        AssemblyInformationalVersion ="$(Tag)-$(CommitCount)-$(ShortCommitHash) $(ReleaseType)"
        AssemblyTitle="$(Tag)-$(CommitCount)-$(CommitHash)"/>
  </Target>

  <!-- copy framework files to libraries -->
  <Target Name="CopyLibraries" Condition="'$(MSBuildProjectName)' == 'BaseApplication'" AfterTargets="Build">
    <CreateItem Include="$(TargetDir)xxx.*">
      <Output TaskParameter="Include" PropertyName="CopyFiles"  />
    </CreateItem>
    <Copy SourceFiles="$(CopyFiles)" DestinationFolder="$(MSBuildProjectDirectory)\..\libraries\xxx\$(Configuration)"/>
  </Target>
  <Target Name="CopyKendoUI" AfterTargets="AfterBuild">
    <ItemGroup>
      <KendoFiles Include="
                    $(TargetDir)kendo.mvc.*;
                    $(TargetDir)\**\Kendo.Mvc.resources.*;" />
    </ItemGroup>
    <Copy SourceFiles="@(KendoFiles)" DestinationFolder="$(MSBuildProjectDirectory)\..\libraries\kendoui\$(Configuration)\%(RecursiveDir)"/>
  </Target>
</Project>

有一些事情阻止了它在 Visual Studio 2019 中使用 .Net Core;

  1. 目標的名稱不能是“GenerateAssemblyInfo”,如果這是目標的名稱,它只是被忽略,沒有錯誤、警告或消息,目標只是不運行......
  2. 在導入msbuild項目的項目的csproj文件中,需要添加false,我在下面添加了這個
  3. 如果將 OutputFile 設置在該文件夾中,則必須手動創建 Properties 文件夾。

下面是工作 build.proj 文件

    <?xml version="1.0" encoding="utf-8"?>
   <Project ToolsVersion="15.0"  xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <Target Name="GetRevisionInfo" BeforeTargets="Build">
       <GitPendingChanges ContinueOnError="WarnAndContinue">
         <Output TaskParameter="HasPendingChanges" PropertyName="HasPendingChanges" />
       </GitPendingChanges>
       <!--This will throw git Error 128 if there are no Tags -->
       <GitDescribe SoftErrorMode="true" Lightweight="true" ContinueOnError="WarnAndContinue">
         <Output TaskParameter="Tag" PropertyName="Tag" />
         <Output TaskParameter="CommitCount" PropertyName="CommitCount" />
         <Output TaskParameter="CommitHash" PropertyName="CommitHash" />
       </GitDescribe>
       <GitBranch ContinueOnError="WarnAndContinue">
         <Output TaskParameter="Branch" PropertyName="Branch" />
       </GitBranch>
       <PropertyGroup>
         <ShortCommitHash Condition="'$(CommitHash)' != ''">$(CommitHash.Substring(0,6))</ShortCommitHash>
         <ReleaseType Condition="'$(CommitCount)' != '' AND '$(CommitCount)' != '0'">Beta</ReleaseType>
         <ReleaseType Condition="'$(Branch)' != '' AND '$(Branch)' != 'master'">Alpha</ReleaseType>
       </PropertyGroup>
     </Target>

  <!-- Error out if this is a release and our working copy has uncommitted changes -->
  <Target Name="CheckRelease" AfterTargets="GetRevisionInfo" Condition="'$(Configuration)' == 'Release'">
    <Error Text="Cannot build a Release Version when there are uncommitted changes, commit or revert all changes." Condition="'$(CommitHash)' != '' AND '$(HasPendingChanges)' == 'True'" />
  </Target>

     <!-- Generates AssemblyInfo file using Git Describe -->
     <Target Name="GenerateAssemblyInfo" AfterTargets="CheckRelease" Condition="'$(CommitHash)' != ''">
       <Time>
         <Output TaskParameter="Year" PropertyName="Year" />
       </Time>
       <AssemblyInfo
         CodeLanguage="CS"
         OutputFile="$(MSBuildProjectDirectory)\Properties\AssemblyInfo.cs"
         AssemblyProduct="$(MSBuildProjectName) $(ReleaseType)"
         AssemblyCompany="xxx xxx xxx, LLC"
         AssemblyCopyright="Copyright © $(Year) xxx xxx xxx, LLC. All rights reserved."
         AssemblyConfiguration="$(Configuration)-$(Platform)"
         AssemblyVersion="$(Tag).$(CommitCount)"
         AssemblyFileVersion="$(Tag).$(CommitCount)"
         AssemblyInformationalVersion ="$(Tag)-$(CommitCount)-$(ShortCommitHash) $(ReleaseType)"
         AssemblyTitle="$(Tag)-$(CommitCount)-$(CommitHash)"/>
      </Target>

     <!-- copy framework files to libraries -->
     <Target Name="CopyLibraries" Condition="'$(MSBuildProjectName)' == 'BaseApplication'" AfterTargets="Build">
       <CreateItem Include="$(TargetDir)xxx.*">
         <Output TaskParameter="Include" PropertyName="CopyFiles"  />
       </CreateItem>
       <Copy SourceFiles="$(CopyFiles)" DestinationFolder="$(MSBuildProjectDirectory)\..\libraries\xxx\$(Configuration)"/>
     </Target>
     <Target Name="CopyKendoUI" AfterTargets="AfterBuild">
       <ItemGroup>
         <KendoFiles Include="
                       $(TargetDir)kendo.mvc.*;
                       $(TargetDir)\**\Kendo.Mvc.resources.*;" />
       </ItemGroup>
       <Copy SourceFiles="@(KendoFiles)" DestinationFolder="$(MSBuildProjectDirectory)\..\libraries\kendoui\$(Configuration)\%(RecursiveDir)"/>
     </Target>
   </Project>

和 MyProject.csproj 文件

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="MSBuildTasks" Version="1.5.0.235">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="Microsoft.AspNetCore.Http.Abstractions">
      <HintPath>C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.http.abstractions\2.2.0\lib\netstandard2.0\Microsoft.AspNetCore.Http.Abstractions.dll</HintPath>
    </Reference>
  </ItemGroup>

  <Import Project="../.build/build.proj" />
</Project

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM