Ни один из оригинальных источников, загруженных с этого сайта (а также проверенных в истории коммитов github), не ссылается на net472;вместо этого они ссылаются на net471.Я подозреваю, что решение было впервые опробовано в Visual Studio 2019, и, не имея установленного пакета таргетинга .NET SDK 4.7.1, была предпринята попытка перенастроить SDK 4.7.2.
После того, как вы это сделаете и повторнооткройте исходный код в VS Code, расширение Omnisharp пытается выполнить компиляцию для первой целевой платформы, найденной из-за слабой поддержки нескольких целевых структур .В этом случае первым найденным для проекта src является net472 (что важно).Обратите внимание, что изменение порядка целевых платформ не имеет никакого эффекта.
Ошибка «Утверждение типа ссылки« HttpContext »определено как« System.Web », но не найдено» теперь просто объяснить.Если мы посмотрим, например, на src / Image.cs, то увидим следующее с помощью операторов:
using System;
using System.IO;
using System.Collections.Generic;
#if netcore
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.StaticFiles;
#else
using System.Web;
#endif
Если проект src «скомпилирован» сервером Omnisharp с использованием net472, он импортирует System.Web.HttpContext
.Демонстрационный проект в Controllers / FoalaApiController.cs, скомпилированный для netcore2.0, вместо этого ссылается на Microsoft.AspNetCore.Http.HttpContext
.Они явно не совпадают.
Если бы Omnisharp выбрал правильную цель netcore2.0 для проекта src, то они бы соответствовали.Это не так, вы видите эти ошибки, сообщенные Omnisharp.Вы не видите этих ошибок из сборки dotnet или VS2019, потому что они правильно разрешают правильную целевую платформу для проекта src.
Вот что я впервые испытал, когда скачал исходный код.Не ясно, какую версию .NET Core SDK вы используете.Когда я собираю исходный код, я вижу следующую ошибку с .NET Core SDK 2.2.100.
ошибка NU1003: PackageTargetFallback и AssetTargetFallback не могут использоваться вместе.Удалите ссылки PackageTargetFallback (не рекомендуется) из среды проекта.
Исправление этой ошибки простое: удалите объявление PackageTargetFallback
из файлов .csproj.После этого проект компилируется без ошибок / предупреждений, используя dotnet build
.
. Первоначально я не видел никаких других ошибок в VS Code, потому что у меня тоже не было установлен пакет таргетинга .NET SDK 4.7.1.Следовательно, Omnisharp может только скомпилировать проект src, используя netstandard2.0.