Ошибка компиляции monodevelop; почему отсутствует ссылка на сборку, если таковая существует?

Я создал проект GTK # 2.0 из MonoDevelop, и он сгенерировал два файла:

Program.cs

using System;
using Gtk;

namespace Application
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Application.Init();
            MainWindow win = new MainWindow();
            win.Show();
            Application.Run();
        }
    }
}

MainWindow.cs:

using System;
using Gtk;

public partial class MainWindow : Gtk.Window
{
    public MainWindow() : base(Gtk.WindowType.Toplevel)
    {
        Build();
    }

    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
    {
        Application.Quit();
        a.RetVal = true;
    }
}

Я нажал кнопку «Отладка», не модифицируя код. Затем компилятор напечатал это:

The type or namespace name `Init' does not exist in the namespace `Application'. Are you missing an assembly reference? (CS0234)
The type or namespace name `Run' does not exist in the namespace `Application'. Are you missing an assembly reference? (CS0234)
The type or namespace name `Quit' does not exist in the namespace `Application'. Are you missing an assembly reference? (CS0234)

Я видел список ссылок на вкладке решений, и там есть Gtk.Application.Init, Run, Quit. Тогда почему возникает эта ошибка?

Какую ОС вы используете? Какая версия MonoDevelop? У вас установлены все необходимые пакеты? Я использую MonoDevelop 7.3.3 с Mono 5.10 на Manjaro. Какая у вас установка? В любом случае вам необходимо установить Gtk #.

Baltasarq 12.04.2018 10:52

MonoDevelop 6.2.1 на DragonFlyBSD; в любом случае, я решил. Я редактировал Application.Init, Run, Quit to Gtk.Application.Init, Run, Quit - это было лекарство.

Julien 14.04.2018 05:10

Если ваш вопрос был точным, то нет объяснения, зачем ставить «Gtk». префикс, который вызывает, решает вашу проблему (у вас было «using Gtk;» в верхней части класса). Неважно, я рад, что ты это решил.

Baltasarq 14.04.2018 11:02

@JihooByeon, если вы ее решили, ответьте на свой вопрос

knocte 16.04.2018 11:27
0
4
491
1

Ответы 1

измените Program.cs на:

using System;
using Gtk;

namespace Application
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Gtk.Application.Init();
            MainWindow win = new MainWindow();
            win.Show();
            Gtk.Application.Run();
        }
    }
}

измените MainWindow.cs на:

using System;
using Gtk;

public partial class MainWindow : Gtk.Window
{
    public MainWindow() : base(Gtk.WindowType.Toplevel)
    {
        Build();
    }

    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
    {
        Gtk.Application.Quit();
        a.RetVal = true;
    }
}

Другие вопросы по теме