Используя образ VS 2017, невозможно построить другие проекты в решении, в котором есть один проект .NET Core 3 - PullRequest
2 голосов
/ 23 октября 2019

У меня есть решение с несколькими проектами, один из которых нацелен на .NET Core 3.

Мне нужно создать другой проект в решении, используя образ VS 2019 и образ 2017 года. Для образа 2017 года мне не нужно создавать проект .NET Core;поэтому я отключил сборку этого проекта с помощью VS Configuration Manager. Тем не менее сборка по-прежнему не удается:

C: \ Program Files \ dotnet \ sdk \ 2.2.108 \ Sdks \ Microsoft.NET.Sdk \ target \ Microsoft.NET.TargetFrameworkInference.targets (137,5): ошибка NETSDK1045: текущий .NET SDK не поддерживает таргетинг на .NET Core 3.0. Либо предназначайтесь для .NET Core 2.2 или ниже, либо используйте версию .NET SDK, которая поддерживает .NET Core 3.0. [C: \ projects \ antlr4parsetreevisualizer_visualizerTestCore_visualizerTestCore.csproj]

из-за этого одного проекта.

Как я могу сказать AppVeyor игнорировать проект в этом случае?

Я попытался явно установить элемент build: project: , но безрезультатно.

appveyor.yml

Ответы [ 2 ]

3 голосов
/ 23 октября 2019

Мы собираемся добавить .NET Core 3.0 в Visual Studio 2017 образ в следующем обновлении (https://github.com/appveyor/ci/issues/3158).. Тем временем вы можете использовать следующий скрипт для установки .NET Core 3.0 во время сборки:

install:
- ps: Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -UseBasicParsing -OutFile "$env:temp\dotnet-install.ps1"
- ps: '& $env:temp\dotnet-install.ps1 -Architecture x64 -Version "3.0.100" -InstallDir "$env:ProgramFiles\dotnet"'

По поводу исключения проекта - я полагаю, что вы можете отключить сборку проекта для конкретной конфигурации в Visual Studio IDE («Диспетчер конфигурации ...»). Однако для проектов .NET Core я бы рекомендовал отказаться от сборкирешение для создания определенных проектов с dotnet build .... Кроме того, если вам нужно опубликовать .NET Core приложение для публикации приложений не будет работать с командой dotnet publish.

0 голосов
/ 24 октября 2019

Изначально у меня был только один .csproj файл для сборки в конфигурации. По образу сборки я передавал проект на dotnet restore (в моем случае мне также пришлось переделывать матричную логику, чтобы она зависела от переменной окружения appveyor_build_worker_image):

environment:
  matrix:

  - job_name: VS 2019 build
    appveyor_build_worker_image: Visual Studio 2019

  - job_name: VS 2017 build
    appveyor_build_worker_image: Visual Studio 2017

# ...

for:

# ...
- 
  matrix:
    only:
      - appveyor_build_worker_image: Visual Studio 2017

  configuration: ReleaseCI2017
  build:
    project: 2017\2017.csproj
  before_build:
    - cmd: dotnet restore 2017\2017.csproj

Как только я это сделал, кажется, что все работает , даже без загрузки + установки .NET Core 3 в сценарии install.

appveyor.yml

Тема на форуме поддержки AppVeyor


Но, как оказалось, мне нужно было создать два проекта для каждого изображения. Я решил эту проблему, используя дополнительные файлы решений для управления тем, какие проекты следует создавать под каждым образом, вместо того, чтобы полагаться на диспетчер конфигурации VS.

Затем я передаю каждое решение элементу build: project и AppVeyor. будет пытаться создавать только конкретные проекты, на которые ссылается это решение.

appveyor.yml

Журнал AppVeyor .

...