Manjaro (Arch) - dotdevelop/dotdevelop GitHub Wiki

Manjaro is an Arch-based distribution, which is popular because its packages tend to be rather more stable and not quite so 'bleeding-edge' as the main Arch ones. A minimal xfce-desktop version has been used here.

Update all system packages before installing additional software
sudo pacman -Syu

Next, install the base-devel package group (which includes binutils, autoconf, automake, gcc, m4, makepkg, etc), plus cmake, clang and intltool
sudo pacman -S base-devel cmake clang intltool

NB git is also needed, but is already included in the manjaro-xfce base system

The dotdevelop build process requires dotnet to be installed. Packages for dotnet are now available in the Official (community) repo, but other Sdks and runtimes may be found in the AUR. For dotnet to work you need to EXPLICITLY install:-

* ONE dotnet-host - highest version possible (Currently 7.0.100)  
* ANY NUMBER of dotnet-runtimes (and their sdks afterwards if you want to build as well)  

Currently (Dec 2022) dotdevelop will build with no errors with dotnet-sdk-5.0 installed. Some 'intermittent' errors occur with dotnet-sdk-6.0 and dotnet-sdk-7.0. (See notes at end)

The Official (community) repo now includes dotnet-sdk-6.0, whereas dotnet-sdk-5.0-bin and dotnet-sdk-3.1-bin are only available from the AUR.

Check :- dotnet --info (typically) reports

.NET SDK (reflecting any global.json):
 Version:   6.0.111
 Commit:    b3bb659a9d

Runtime Environment:
 OS Name:     manjaro
 OS Version:
 OS Platform: Linux
 RID:         arch-x64
 Base Path:   /usr/share/dotnet/sdk/6.0.111/

Host:
  Version:      7.0.0
  Architecture: x64
  Commit:       d099f075e4

.NET SDKs installed:
  3.1.412 [/usr/share/dotnet/sdk]
  5.0.400 [/usr/share/dotnet/sdk]
  6.0.111 [/usr/share/dotnet/sdk]

.NET runtimes installed:
  Microsoft.NETCore.App 3.1.18 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.9 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.11 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.0 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  DOTNET_ROOT       [/usr/share/dotnet]

global.json file:
  Not found

Other necessary packages are now becoming available in the Official (community) repositories, whereas they have previously been available only in the AUR. They are listed separately below.

Official (community) Packages

Install mono-msbuild and mono-msbuild-sdkresolver. This also installs the Roslyn compiler (needed by the dotdevelop build scripts) into /usr/lib/mono/msbuild/Current/bin/Roslyn
Check:- mono --version reports

Mono JIT compiler version 6.12.0 (main/4b5e2591eb2 Thu 14 Apr 15:51:51 UTC 2022)
Copyright (C) Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com

msbuild --version reports

Microsoft (R) Build Engine version 16.10.1 for Mono
Copyright (C) Microsoft Corporation. All rights reserved.

AUR Packages

python2 is required to build some of the following. The easiest way to install this is from python2-bin

The legacy Mono F# Compiler (currently at version 5.0) is available from fsharp-mono-bin

libglade, needed for glade-sharp, is available from libglade.git

The 'Stetic' Addin requires glade-sharp to be installed, and this is included in gtk-sharp-2-git.

This should be all that is required to build DotDevelop, so, for a 'clean' download from GitHub and a build of the current main branch of dotdevelop, run the following script from a convenient directory

#!/bin/sh
rm -R -f dotdevelop
git clone https://github.com/dotdevelop/dotdevelop.git
cd dotdevelop
./configure --profile=gnome
make  

This builds with no errors (on dotnet-sdk-5.0), and dotdevelop can be run from the MonoDevelop.exe binary that is produced.

mono dotdevelop/main/build/bin/MonoDevelop.exe --no-redirect  

SamsungNetCore Debugger

The .NET Core Debugger is not included in the above build, but is needed for debugging .NETCore projects. Building the DotDevelop version from main/external/Samsung.Netcoredbg/ currently fails under Arch for 2 reasons

  1. no ICU package can be found (why this is so is currently being investigated)
  2. compile errors (possibly because clang is at version 14.0.6, rather than version 10.0.0 which works under Ubuntu)

However, the latest release (https://github.com/Samsung/netcoredbg/releases/tag/2.2.0-947) works. Download, extract and copy the contents of the netcoredbg folder to main/build/AddIns/Samsung.Netcoredbg/netcoredbg
To run without an ICU package being found set environment variable DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1

Verify .NET Core Debugger is attached

  1. Launch MonoDevelop
  2. Edit > Preferences > Projects > .NET Core Debuggers
  3. Click ... and navigate to main/build/AddIns/Samsung.Netcoredbg/netcoredbg
  4. Click, OK and start debugging

Running DotDevelop with .NET6.0+ installed

With dotnet-sdk-6.0+ installed, the following error occurs:-

"MSB4236 WorkloadAutoImportPropsLocator could not be found".

This is described by this issue with the following workaround:-

Set the environment variable MSBuildEnableWorkloadResolver=false prior to starting monodevelop (Note - this applies to all distros, not just Arch)

'Intermittent' Build errors with .NET6.0+ installed (Arch only)

The following errors (or similar) occur when building with net6.0+ installed

error MSB4018: System.IO.FileNotFoundException: Could not load file or assembly 'System.Text.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies.
[/home/hwt/build/dd-hwt/main/external/xwt/Xwt/Xwt.csproj]

error MSB4018: System.IO.FileNotFoundException: Could not load file or assembly 'System.Text.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. 
[/home/hwt/build/dd-dbug/main/external/Xamarin.PropertyEditing/Xamarin.PropertyEditing/Xamarin.PropertyEditing.csproj]

Repeating the build usually reduces the errors from 2 to 1, and a further build is then without error. Because of time constraints, this has not been explored further.