Visual Studio Pack 命令后面有哪些命令?

What commands are behind the Visual Studio Pack command?

我正在尝试配置一个 GitHub 工作流来构建我的多目标 NuGet 包(与 Xamarin.Forms 一起使用)并将此包推送到 GitHub 和 Nuget。我讨论了这个问题here,似乎可以归结为以下几点:

我无法在我的工作流程中使用 dotnet pack,它会导致以下错误:

C:\Users\user\.nuget\packages\msbuild.sdk.extras.1.2\Build\Workarounds.targets(27,5): error : If you are building projects that require targets from full MSBuild or MSBuildFrameworkToolsPath, you need to use desktop msbuild ('msbuild.exe') instead of 'dotnet build' or 'dotnet msbuild' [C:\path\to.csproj]

当我使用 MSBuild(在我的计算机上手动或通过工作流)时,只有 UWP 声明可用,并且适用于所有目标平台(Android、iOS、UWP)。

当我右键单击 class 库项目并单击 Pack 命令时,生成的包按预期工作。所有平台都可以调用特定于平台的声明。

问题:

很简单,[右击csproj文件]→打包后面有什么命令?我想手动尝试 运行 这些命令以弄清楚发生了什么...

信息:

显然 MSBuild CLI 中存在错误。

使用以下命令时:

msbuild /t:Pack /p:Configuration=Debug Library/Company.Xamarin.Alert/Company.Xamarin.Alert.csproj

生成的nupkg可以安装在Xamarin.Forms应用的每个项目中,可以调用platform-specific代码

但是,当运行相同的命令与p:OutputPath参数指定时:

msbuild /t:Pack /p:Configuration=Debug /p:OutputPath=../.. Library/Company.Xamarin.Alert/Company.Xamarin.Alert.csproj

生成的 nupkg 仅包含 UWP 的定义。

我已经为此提交了一个错误 here

我的最终工作流程如下所示:

name: .NET Core

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: windows-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v2
    
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v1.5.0
      with:
        dotnet-version: 3.1.301
        # Authenticates packages to push to GPR
        source-url: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json
      env:
        NUGET_AUTH_TOKEN: '%NUGET_AUTH_TOKEN%'
    
    - name: Setup MSBuild
      uses: microsoft/setup-msbuild@v1.0.1
    
    - name: Install dependencies
      run: msbuild /t:Restore
      env:
        NUGET_AUTH_TOKEN: ${{ github.token }}
    
    - name: Build
      run: msbuild /t:Pack /p:Configuration=Debug Library/MintPlayer.MVVM/MintPlayer.MVVM.csproj
    
    - name: PushNuget
      run: dotnet nuget push "**/*.nupkg" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.PUBLISH_TO_NUGET_ORG }} --skip-duplicate
    
    - name: PushGithub
      run: nuget.exe push "**/*.nupkg" -NoSymbols -SkipDuplicate
      env:
        NUGET_AUTH_TOKEN: ${{ github.token }}