.NET Core Github 操作 MSBuild 错误 MSB4044

问题描述 投票:0回答:2

我有以下 github Actions 脚本要部署到 NuGet:

name: NuGet Publish

on:
  push:
    tags:
      - 'v*.*.*' # Specify the tag pattern, e.g., 'v1.0.0'
jobs:
  deploy:
    name: Deploy
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v2
    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 6.0.x
    - uses: actions/cache@v2
      id: cacheStep
      with:
        path: ~/.nuget/packages
        key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
        restore-keys: |
          ${{ runner.os }}-nuget-
    - name: Restore dependencies
      run: dotnet restore
    - name: Setup NuGet.exe for use with actions
      uses: NuGet/[email protected]
    - name: Restore NuGet
      if: steps.cacheStep.outputs.cache-hit != 'true'
      run: nuget restore Octane.sln
    - name: Set VERSION variable from tag
      run: echo "VERSION=${GITHUB_REF/refs\/tags\/v/}" >> $GITHUB_ENV
    - name: Build
      run: dotnet build OctaneEngine/OctaneEngine.csproj --no-restore --configuration Release /p:Version=${VERSION} /p:AssemblyVersion=${VERSION}
    - name: Publish NuGet package
      run: dotnet nuget push OctaneEngine/bin/Release/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} /p:Version=${VERSION}
      env:
        NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}

此代码在构建步骤中失败并给出错误:

MSB4044:“GenerateDepsFile”任务未给出所需参数“AssemblyVersion”的值

我也尝试在脚本中手动指定这一点,但仍然没有解决。我在 .csproj 文件中禁用了GenerateAssemblyInfo,并定义了默认程序集版本1.0.0.0。

c# .net msbuild github-actions
2个回答
0
投票

您正在使用 Windows 运行程序 (

windows-latest
) 及其默认 shell,即 pwsh(截至目前为 PowerShell 7.2.17)。您应该使用您正在使用的运行程序的相应 shell 支持的
run
部分下的命令。

以下语法用于访问PowerShell下的环境变量:

$Env:<variable-name>

您需要更新工作流程中所有环境变量的语法:

  • $GITHUB_REF
    =>
    $Env:GITHUB_REF
  • $GITHUB_ENV
    =>
    $Env:GITHUB_ENV
  • $VERSION
    =>
    $Env:VERSION

合并这些更改后,您的步骤将如下所示:

- name: Set VERSION variable from tag
  run: |
    $VERSION=$Env:GITHUB_REF_NAME.TrimStart("v")
    echo "VERSION=$VERSION" >> $Env:GITHUB_ENV

- name: Build
  run: dotnet build OctaneEngine/OctaneEngine.csproj --no-restore --configuration Release /p:Version=$Env:VERSION /p:AssemblyVersion=$Env:VERSION

- name: Publish NuGet package
  run: dotnet nuget push OctaneEngine/bin/Release/*.nupkg --source https://api.nuget.org/v3/index.json --api-key $Env:NUGET_API_KEY /p:Version=$Env:VERSION
  env:
    NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}

-1
投票

在 GitHub Actions 工作流程中,您可以使用以下方法设置

VERSION
变量:

   - name: Set VERSION variable from tag
     run: echo "VERSION=${GITHUB_REF/refs\/tags\/v/}" >> $GITHUB_ENV

这会在环境中设置

VERSION
变量。但是,环境变量在后续步骤中不会自动可用。

您需要在同一步骤中加载环境变量或在后续步骤中使用它。因此,您应该修改构建步骤以正确使用

VERSION
变量。

下一步应该修改为包含如下所示的

env
部分来声明所需的变量:

   - name: Build
     run: dotnet build OctaneEngine/OctaneEngine.csproj --no-restore --configuration Release /p:Version=${VERSION} /p:AssemblyVersion=${VERSION}
     env:
       VERSION: ${{ env.VERSION }}

考虑到上述情况,

Publish NuGet package
步骤也需要修改:

   - name: Publish NuGet package
     run: dotnet nuget push OctaneEngine/bin/Release/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${NUGET_API_KEY} /p:Version=${VERSION}
     env:
       VERSION: ${{ env.VERSION }}
       NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
© www.soinside.com 2019 - 2024. All rights reserved.