skip to Main Content

Something changed in the way the dotnet publish workflow task works. We’ve been using this pretty straightforward yaml script for some time now.

name: Publish to staging server

env:
  AZURE_WEBAPP_NAME: 'my-dotnet-webapp'
  AZURE_SLOT_NAME: 'staging'
  GITHUB_PUBLISH_SECRET: ${{ secrets.AZURE_DEPLOYMENTSLOT_STAGING }}
  AZURE_WEBAPP_PACKAGE_PATH: '.'
  DOTNET_VERSION: '7.0.0' 

on:
  push:
    branches:
      - staging
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Set up .NET Core
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }}

      - name: Set up dependency caching for faster builds
        uses: actions/cache@v3
        with:
          path: ~/.nuget/packages
          key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
          restore-keys: |
            ${{ runner.os }}-nuget-

      - name: Build with dotnet
        run: dotnet build --configuration Release

      - name: dotnet publish
        run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: .net-app
          path: ${{env.DOTNET_ROOT}}/myapp
          retention-days: 1

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: .net-app

      - name: Deploy to Azure Web App
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: ${{ env.AZURE_WEBAPP_NAME }}
          slot-name: ${{ env.AZURE_SLOT_NAME }}
          publish-profile: ${{ env.GITHUB_PUBLISH_SECRET }}
          package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}

Today, I tried to run with workflow and received the following error during the dotnet publish step:

Error: /usr/share/dotnet/sdk/7.0.200/Current/SolutionFile/ImportAfter/Microsoft.NET.Sdk.Solution.targets(36,5): error NETSDK1194: The "--output" option isn't supported when building a solution. 

I expected the workflow to run without error as it has done dozens of times previously.

What’s really going on here?

5

Answers


  1. Chosen as BEST ANSWER

    After a considerable amount of research and a little trial and error, I realized that I had to explicitly specify the webapp project file as an argument of the command. This is because I do still need to use the output option, so Github knows where to find the files in the subsequent deploy workflow.

    Then there was the matter of figuring out the file path for the project file. This may vary for others based on their specific Visual Studio solution file structure.

    Here is the fix that worked to resolve this issue (assume that when I created my project in VS, I named it MyWebApp:

    - name: dotnet publish
      run: dotnet publish ~/work/MyWebApp/MyWebApp/MyWebApp/MyWebApp.csproj -c Release -o ${{env.DOTNET_ROOT}}/myapp
    

    Yes, that's 3 directories deep. The project file in my Windows file explorer is only 2 directories deep.

    Hope this helps someone.

    UPDATE 3/30/2023

    Thanks to all the other answers and comments! They helped get my build working and published to Azure, however it still left me with a warning about -output not being supported.

    This is what my dotnet publish command looks like now. No errors, no warnings

    dotnet publish -c Release -property:PublishDir=${{env.DOTNET_ROOT}}/myapp
    

  2. The reason for this is a update by .NET according to This guy, what worked for me was changing

    --output .
    

    To

    --property:PackageOutputPath=.
    
    Login or Signup to reply.
  3. In my case, someone from our team accidentally pushed solution inside another solution (.sln file inside another solution to be correct)
    After deleting that one, everything become fine

    Login or Signup to reply.
  4. This line code needs to be changed as follows:

      - name: dotnet publish
        run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp
    

    to:

      - name: dotnet publish
        run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp -f=net7.0
    

    In order to publish an app using .net core and GitHub actions, we must set the target framework explicitly.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search