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 版本:16.7.0.37604(位于
C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin
)
- GitHub CI 上的 msbuild 版本:16.7.0+b89cb5fde
- GitHub CI 上的 dotnet 版本:3.1.301
显然 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 }}
我正在尝试配置一个 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 版本:16.7.0.37604(位于
C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin
) - GitHub CI 上的 msbuild 版本:16.7.0+b89cb5fde
- GitHub CI 上的 dotnet 版本:3.1.301
显然 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 }}