Публикация проекта WPF с помощью команды

Публикуя свой проект WPF, я обычно использую Visual Studio 22, перейдя в «Выбор публикации» и вставив свои настройки (win-x86, любой процессор, автономный). Это работает так, как и ожидалось, однако теперь я хочу автоматизировать развертывание, используя мой репозиторий GitHub и действия GitHub. Для этого мне нужна команда для публикации. Через некоторое время я получил эту команду для работы:

dotnet publish --configuration Release --self-contained true --runtime win-x86 --output ./published

Однако: запустив это (либо в действии GitHub с помощью run: *the command*, либо просто локально с помощью cmd), я получаю следующую ошибку:

Задача «ResolveComReference» не поддерживается в .NET Core. версия MSBuild. Используйте версию MSBuild для .NET Framework.

Я немного покопался и попробовал следующее:

1. Изменил файл .csproj.

Я добавил:

<PropertyGroup>
  <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
  <TargetFramework>net6.0-windows</TargetFramework>
</PropertyGroup>

Это не имело значения.

2. Использована команда msbuild.

Я поменял dotnet publish command на dotnet msbuild -v:normal -p:Configuration=RELEASE что привело к следующей ошибке при выполнении в действии GitHub:

Assets file 'D:\a\SES\SES\SES\obj\project.assets.json' not found. Run a NuGet package restore to generate this file. [D:\a\SES\SES\SES\SES.csproj]

И это снова при локальном выполнении:

Задача «ResolveComReference» не поддерживается в .NET Core. версия MSBuild. Используйте версию MSBuild для .NET Framework.

Возникают следующие вопросы:

1. В чем здесь основная проблема?

2. Почему не вылетает при создании через VS

3. Как мне правильно опубликовать с помощью команды, чтобы избежать этого и использовать ее в своем действии GitHub?

Установлены ли вы «Visual Studio 2022» или «Инструменты сборки для Visual Studio 2022» на хосте агента сборки? Вам нужно запустить автономный msbuild, который установлен вместе с VS, а не тот msbuild, который встроен в dotnet. Автономный msbuild поддерживает как .Net Framework, так и .Net (он же .Net Core). Инструмент dotnet, включая встроенный msbuild, поддерживает только .Net.

Jonathan Dodds 03.06.2024 22:50

Я помню, как у меня были проблемы с построением конвейера CI/CD, который Azure разрабатывает с помощью проекта WPF. Самым стабильным решением, которое я получил, было создание профиля публикации и запуск его в конвейере. хотя это может не помочь вам на 100%, но может дать вам несколько идей для решения

Demon 04.06.2024 01:41

VS использует MSBuild, а не .NET CLI, поэтому начинать следует с msbuild /t:publish.

Lex Li 04.06.2024 14:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Примечание. Это проверено на .NET Framework 4.8.

  - uses: actions/checkout@v3

  - name: Setup MSBuild
    uses: microsoft/[email protected]

  - name: Setup Nuget
    uses: NuGet/[email protected]
   
  - name: Restore Nuget Packages
    run: nuget restore [SOLUTION_PATH]

  - name: Navigate To Workspace
    run:  cd $GITHUB_WORKSPACE
    
  - name: Create Build Directory
    run: mkdir Release
    
  - name: Build Libraries
    run: msbuild [SOLUTION_PATH] /p:Configuration=Release /p:DeployOnBuild=true /p:DeleteExistingFiles=True /p:OutDir = "../Release"

и, конечно же, бегун для этого задания Github должен быть Windows

Другие вопросы по теме