.NET MSBuild 目标 AfterTargets=使用 dotnet 构建进行打包

Cal*_*ton 6 .net c# msbuild msbuild-task .net-core

更新:

\n\n

似乎添加dotnet build -v d又名将详细程度设置为详细显示了有关此过程的更多细节(显然)

\n\n

原来的:

\n\n

参考: https: //learn.microsoft.com/en-us/nuget/reference/msbuild-targets

\n\n

我正在使用dotnet build,我的 csproj 看起来像:

\n\n
<Project Sdk="Microsoft.NET.Sdk">\n\n  <PropertyGroup>\n    <TargetFramework>netstandard2.0</TargetFramework>\n    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>\n    <PackageOutputPath>..\\packages\\</PackageOutputPath>\n    <AssemblyVersion>0.1.0</AssemblyVersion>    \n  </PropertyGroup>\n\n  <Target Name="CopyPackage" AfterTargets="Pack">\n      <Copy\n        SourceFiles="$(OutputPath)..\\$(PackageId).$(PackageVersion).nupkg"\n        DestinationFolder="%USERPROFILE%\\.nuget\\packages"\n      />\n  </Target>\n  <Target Name="AfterPackMessage" AfterTargets="Pack">\n    <Message Text="Copied $(OutputPath)..\\$(PackageId).$(PackageVersion).nupkg TO %USERPROFILE%\\.nuget\\packages" />  \n  </Target>\n</Project>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我只看到这个输出

\n\n
C:\\code\\MySolution.net\\MyProject.Core (feature-mediator-http)\n\xce\xbb dotnet build\nMicrosoft (R) Build Engine version 15.8.169+g1ccb72aefa for .NET Core\nCopyright (C) Microsoft Corporation. All rights reserved.\n\n  Restore completed in 70.34 ms for C:\\code\\MySolution.net\\MyProject.Core\\MyProject.Core.csproj.\n  MyProject.Core -> C:\\code\\MySolution.net\\MyProject.Core\\bin\\Debug\\netstandard2.0\\MyProject.Core.dll\n  Successfully created package \'C:\\code\\MySolution.net\\packages\\MyProject.Core.1.0.0.nupkg\'.\n\nBuild succeeded.\n    0 Warning(s)\n    0 Error(s)\n\nTime Elapsed 00:00:03.68\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里有两个问题:

\n\n

1)那些Target似乎没有被执行

\n\n

2)AssemblyVersion似乎没有得到应用

\n\n

dotnet pack或者nuget pack似乎没有什么区别

\n

小智 0

在这种情况下最好使用 Importance="High":

<Message Importance="High" Text="your Message"/>
Run Code Online (Sandbox Code Playgroud)