Публикуя свой проект 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.
Я немного покопался и попробовал следующее:
Я добавил:
<PropertyGroup>
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<TargetFramework>net6.0-windows</TargetFramework>
</PropertyGroup>
Это не имело значения.
Я поменял 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.
Возникают следующие вопросы:
Я помню, как у меня были проблемы с построением конвейера CI/CD, который Azure разрабатывает с помощью проекта WPF. Самым стабильным решением, которое я получил, было создание профиля публикации и запуск его в конвейере. хотя это может не помочь вам на 100%, но может дать вам несколько идей для решения
VS использует MSBuild, а не .NET CLI, поэтому начинать следует с msbuild /t:publish.





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