Подготовка окружения разработчика - QualitySolution/QSProjects GitHub Wiki
Подсказки по установке и подготовке окружение разработчика
- Установка Monodevelop
Инструкция на официальном сайте
На openSUSE можно использовать репозитории CentOS:
sudo zypper ar https://download.mono-project.com/repo/centos8-vs.repo
sudo zypper ref
sudo zypper in monodevelop
- Нужен git
openSUSE:
sudo zypper in git
Debian/Ubuntu/Mint
sudo apt-get install git
Fedora
su -c 'yum install git'
- Чтобы 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 нет.