Эталонные сборки для .NETFramework не найдены (4.7.1)

Вопрос или проблема

Я недавно установил Linux на свой ПК (Deepin, дистрибутив на основе Debian). В этой свежей установке дистрибутива я установил VSCode и Unity, так как мне хотелось поиграть в разработку игр. VSCode, так как я видел некоторые предупреждения где-то, я также пошел установить dot net с официального сайта Microsoft, который, похоже, является старой версией “3.1”.

Но, несмотря на то, что .net установлен, я все равно получаю следующую ошибку при запуске VSCode:

Ссылочные сборки для .NETFramework,Version=v4.7.1 не найдены. Чтобы решить эту проблему, установите пакет разработчика (SDK/Targeting Pack) для этой версии фреймворка или перенаправьте ваше приложение.

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

Что я делаю неправильно?

Я новичок в разработке игр, как и в работе на Linux, мне просто хочется поиграться с этим.

Мой mono -V:

Компилятор Mono JIT версии 6.12.0.90 (tarball Пт Сен  4 14:03:37 UTC 2020)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc и участники проекта. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Уведомления:   epoll
        Архитектура:   amd64
        Отключено:     нет
        Разное:        softdebug 
        Интерпретатор: да
        LLVM:          да(610)
        Приостановка:  гибридная
        Сборщик мусора: sgen (по умолчанию конкурентный)

Мой dotnet --info:

.NET Core SDK (отражает любой global.json):
 Версия:   3.1.402
 Коммит:   9b5de826fd

Среда выполнения:
 Имя ОС:     Deepin
 Версия ОС:  20
 Платформа ОС: Linux
 RID:         linux-x64
 Базовый путь:   /usr/share/dotnet/sdk/3.1.402/

Хост (полезно для поддержки):
  Версия: 3.1.8
  Коммит:  9c1330dedd

Установленные .NET Core SDK:
  3.1.402 [/usr/share/dotnet/sdk]

Установленные .NET Core runtime:
  Microsoft.AspNetCore.App 3.1.8 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 3.1.8 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

Чтобы установить дополнительные .NET Core runtime или SDK:
  https://aka.ms/dotnet-download

Вы установили dotnet core 3.1, но хотите .Net Framework.

dotnet core — это кроссплатформенный фреймворк, который работает на Linux. .Net Framework AFAIK только для Windows.

Не уверен, что это именно то, что вам нужно, но если вы используете Wine, вы можете эмулировать его на Linux: Установка Microsoft Net Framework 4.7 в Ubuntu 18.04/18.10

.

Ответ или решение

Для решения проблемы, связанной с отсутствием reference assemblies для .NETFramework версии 4.7.1 на вашей Linux-системе Deepin, необходимо понимать различие между .NET Core и .NET Framework, а также особенности их совместимости с различными операционными системами.

Теория

.NET Framework — это технология разработки от Microsoft, изначально разработанная для Windows. Она включает в себя API и набор библиотек, которые используются для создания и запуска приложений на платформе Windows. Версия 4.7.1, о которой идет речь, является частью этой технологии.

С другой стороны, .NET Core — это кросс-платформенная версия .NET, которая была разработана, чтобы работать на различных операционных системах, включая Linux. Однако .NET Core не поддерживает все функции и API, которые изначально предоставляются .NET Framework.

Пример

Ваша текущая установка .NET Core 3.1 подразумевает использование системы, полностью адаптированной для кросс-платформенной разработки, но она не обеспечивает работы с проектами, созданными для .NET Framework 4.7.1. Установка Mono, среды исполнения для приложений, написанных на C# под Linux, предпринятая вами, также не решила проблему, поскольку Mono требует соответствующих reference assemblies, чтобы поддерживать проекты .NET Framework.

Применение

Наиболее прагматичный способ решения вашей проблемы заключается в переходе на платформу, позволяющую работать с .NET Framework 4.7.1, или переходе на версию .NET, поддерживаемую Mono.

  1. Использование Wine:
    Если вы хотите именно ту функциональность, которую предоставляет .NET Framework 4.7.1, вам следует установить его через Wine, как рекомендуют в обсуждении, к которому вы обратились. Wine — это слой совместимости, который позволяет запускать приложения Windows на Linux.

  2. Адаптация проекта для .NET Core:
    Рассмотрите возможность переписывания вашего проекта для совместимости с .NET Core. Несмотря на некоторые ограничения, .NET Core предлагает множество современных функций и поддерживается на Linux. Это требовало бы выполнения миграции проекта, но в итоге приведет к более нативной и поддерживаемой среде разработки на Linux.

  3. Установка MonoDevelop:
    Установите среду разработчиков MonoDevelop, которая интегрирована с Mono и часто включает необходимые инструменты для разработки на платформе .NET Framework.

  4. Разработка и отладка на Windows:
    Как альтернативный вариант, можно использовать виртуальную машину с Windows для разработки и отладки, сохраняя основную работу в Linux.

Каждое из этих решений имеет свои преимущества и ограничения. Выбор оптимального подхода зависит от ваших целей и удобства использования. Если вы хотите продолжать работать на Linux с проектами .NET, рекомендую рассмотреть переход на полный .NET Core.

Оцените материал
Добавить комментарий

Капча загружается...