如何在20.04中安装Monodevelop并使其构建项目?

我正在尝试使用20.04设置开发机器,并且在Monodevelop环境中遇到了问题。

每当我创建解决方案和项目时,似乎无法找到正确的构建设置。我怀疑在20.04上使用18.04的mono存储库时存在一些问题,但我找不到如何修复它。

这是当我尝试使用Monodevelop IDE构建时收到的错误:

/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(5,5): 
Error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found.
Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. (MSB4019) (HelloWorld)

有人知道如何在Ubuntu 20.04上获取一个可用的Monodevelop版本吗?

给投票者们 - 20.04 LTS已经发布。关于MonoDevelop,请参考https://askubuntu.com/a/1228572/66509。 - N0rbert
我不使用MonoDevelop,而是编译在Visual Studio中创建的项目。自从Mono版本5.n以来,我一直使用msbuild来编译我的项目,但在Ubuntu 20.04中这个方法不再有效。在我的情况下,无法找到msbuild。尝试安装msbuild也无法解决问题。 - Peter Gloor
4个回答

我成功在Ubuntu 20.04上修复了这个问题。
首先,按照官方指南中的说明,将mono-project的存储库添加到18.04版本中,以下是为了方便而粘贴的内容:
sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

然后使用以下命令安装mono-roslyn:
sudo apt install mono-roslyn

重建你的项目。

2值得明确提到的是:截至目前,Ubuntu 20.04仓库版本的 mono-complete 6.8 不包括 msbuildmono-roslyn 等(可能是因为许可证?),所以如果您想使用已弃用的 xbuild 而不是 msbuild,将Mono仓库添加到apt是非常必要的。 - geekley
这对我在Ubuntu 20.10上也起作用(默认情况下仍然使用mono 6.8) - Andreas Fester

Mono目前尚未在稳定的软件仓库中提供,但您可以通过以下方式使用preview-focal main安装它。
sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu preview-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-preview.list
sudo apt update

# if the packages were already installed
sudo apt upgrade

# otherwise
sudo apt install mono-complete msbuild

稍后,您可以通过创建一个名为hello.cs的文件,使用一个简单的“Hello World”应用程序来测试它。
using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        Console.WriteLine ("Hello Mono World");
    }
}

使用csc hello.cs编译它。它将生成一个exe文件。现在使用mono hello.exe运行它,应该可以正常工作。

我尝试过了,但是出现了调试器操作失败的错误。
ApplicationName='/usr/lib/gnome-terminal/gnome-terminal-  
server', CommandLine='--app-id  
mono.develop.id9462e6d67d3f4540ace204fe87960524',  
CurrentDirectory='', Native error= Cannot find the specified file

enter image description here


我在Ubuntu 21.10上使用Debian Buster源成功安装了Monodevelop 7.8.4(构建2)和Mono版本6.12.0.122。
  1. 首先,您需要安装libjpeg62-turbo_1.5.2-2+deb10u1_amd64.deb

  2. 安装完成后,打开终端并输入以下命令:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    echo "deb https://download.mono-project.com/repo/debian buster main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
    sudo apt update
    sudo apt install monodevelop
    
  3. 此时,monodevelop已加载并运行,但无法进行调试,并且会出现以下错误:

    ApplicationName='/usr/lib/gnome-terminal/gnome-terminal-server', CommandLine='--app-id mono.develop.id9462e6d67d3f4540ace204fe87960524', CurrentDirectory='', Native error= Cannot find the specified file
    
  4. 为了解决这个问题,我们返回终端并运行以下命令:

    cd /usr/lib
    sudo mkdir gnome-terminal
    cd gnome-terminal
    sudo ln -s /usr/libexec/gnome-terminal-server
    
  5. 重新启动并享受吧。