Подготовка окружения разработчика - QualitySolution/QSProjects GitHub Wiki

Подсказки по установке и подготовке окружение разработчика

  1. Установка Monodevelop

Инструкция на официальном сайте

На openSUSE можно использовать репозитории CentOS:

sudo zypper ar https://download.mono-project.com/repo/centos8-vs.repo
sudo zypper ref
sudo zypper in monodevelop
  1. Нужен git

openSUSE:

sudo zypper in git

Debian/Ubuntu/Mint

sudo apt-get install git

Fedora

su -c 'yum install git'
  1. Чтобы Nuget смог скачивать пакеты нужно добавить сертификаты

openSUSE:

cert-sync --user /etc/ssl/ca-bundle.pem

Debian

cert-sync /etc/ssl/certs/ca-certificates.crt

Дополнительно:

При использовании VirtualBox перед установкой дополнений гостевой ОС vitrualbox, необходимо установить наборы пакетов:

YaST Package manager -> Patterns -> Выбрать для установки следующие наборы:

Base Development

GNOME Development

Linux Kernel Development

Нужно установить .net core

Linux

https://docs.microsoft.com/ru-ru/dotnet/core/install/linux Нужна именно версия до 5 (3.1 например)

Работа с документацией

В проекте по спецодежде пользовательская документация составляется в формате adoc. В качестве каркаса для документации используется проект https://antora.org/

Asciidoctor PDF

Для сборки виндового установщика на компьютер необходимо будет так же устновить Asciidoctor PDF, это конвертер документации в pdf. Документация в это формате поставляется вместе с программой.

Проще всего его установить через gem. Естественно Ruby и gem должны быть уже установлены.
sudo gem install asciidoctor-pdf

Antora

Для сборки веб версии документации необходимо установть https://docs.antora.org/antora/latest/install-and-run-quickstart/

Решение проблем

Ошибка при выполнении восстановления пакетов

Getting restore information for solution /home/andrew/Projects/QSProjects/QSProjectsLib.sln
ApplicationName='/usr/bin/mono64', CommandLine='"/usr/lib/mono/msbuild/15.0/bin/MSBuild.dll" "/tmp/NuGetScratch/hx5qx4wu.t4w.nugetinputs.targets" /t:GenerateRestoreGraphFile /nologo /nr:false /v:q /p:RestoreBuildInParallel="False" /p:RestoreUseSkipNonexistentTargets="False"', CurrentDirectory='/home/andrew/Projects/QSProjects', Native error= Cannot find the specified file

Создаем символическую ссылку /usr/bin/mono64 на /usr/bin/mono и все начинает работать.

Linux

su
ln -s /usr/bin/mono /usr/bin/mono64

Не находит библиотеку SQLite3 (libsqlite3)

Нужно установить sqlite3

Debian

sudo apt-get install sqlite3

Создаем символическую ссылку libsqlite3.so на актуальную библиотеку.

Debian

su
ln -s /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 /usr/lib/x86_64-linux-gnu/libsqlite3.so

OpenSUSE

su
ln -s /usr/lib64/libsqlite3.so.0 /usr/lib64/libsqlite3.so

Dotnet почти при любом действия ругается на версию ICU

Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
   at System.Environment.FailFast(System.String)
   at System.Globalization.GlobalizationMode.GetGlobalizationInvariantMode()
   at System.Globalization.GlobalizationMode..cctor()
   at System.Globalization.CultureData.CreateCultureWithInvariantData()
   at System.Globalization.CultureData.get_Invariant()
   at System.Globalization.CultureInfo..cctor()
   at System.String.ToUpperInvariant()
   at System.Diagnostics.Tracing.EventSource.GetGuid(System.Type)
   at System.Diagnostics.Tracing.EventSource..ctor(System.Diagnostics.Tracing.EventSourceSettings, System.String[])
   at System.Diagnostics.Tracing.EventSource..ctor()
   at Microsoft.Build.Eventing.MSBuildEventSource..cctor()
   at Microsoft.Build.CommandLine.MSBuildApp.Execute(System.String[])
   at Microsoft.Build.CommandLine.MSBuildApp.Main(System.String[])

Описание бага здесь https://github.com/dotnet/sdk/issues/25069

В крадце dotnet 3.1 поддерживает максимальную версию icu 70, при версии выше выводится ошибка.

Установка переменной окружения CLR_ICU_VERSION_OVERRIDE в текущую версию библиотеки (для меня 71.1) чинит проблему. Чтобы установить переменную окружения постоянно нужно отредактировать файл nano ~/.bashrc добавить в него export CLR_ICU_VERSION_OVERRIDE="71.1"

Работа MonoDevelop на системе с установленным NET6

Если в системе установлен NET6, MonoDevelop напроч отказывался собирать пакеты с NetStandard со ошикой что не может найти "Microsoft.NET.SDK.WorkloadAutoImportPropsLocator". Причем без устновленного Net6 на netcore 3.1 все работает.

Сработало следующее решение. Папка /usr/share/dotnet (без установленной net6) скопирована например в именем dotnet3 и в настройках Monodevelop путь к расположению SDK указана новая папка. Получается что система в частности Rider может использовать NET6, а Monodevelop работает со своей папкой, где NET6 нет.