Pull to refresh

Поддержка .NET на базе IntelliJ — реальность?

Reading time2 min
Views21K
Поговорим про поддержку .NET на IntelliJ платформе. После прочтения вы сами решите: реальность ли?

Сделаем обычный Hello World. Что для проверки нам нужно?
1. Скачать билд Consulo (мой форк IntelliJ IDEA, почему форк – иная тема).

2. Запускаем bin\consulo.exe(win 32), bin\consulo64.exe(win 64), Consulo.app(mac), bin/consulo.sh(linux). Я рекомендую проверять на Windows, хотя я и проверял билды на Линуксе и Маке, но они менее стабильные, да и есть пару проблем (например, с Mac + Mono). Если все прошло гладко — имеем:

image

3. Кликаем на Actions -> Configure -> Plugins. Видим там пустой список. Нажимаем browse repositories…. Появится диалог, через секунд 10 появится список доступных плагинов (задержка — плохая реализация плагин репозитория). Ищем там Microsoft .NET или Mono .NET и устанавливаем. В итоге мы должны иметь:

image

4. Actions -> Create Project -> OK . Мы имеем пустой проект. Идем в настройки проекта. Ищем наш модуль и выбираем вкладку Extensions. Там выбираем Microsoft .NET -> C# (или Mono .NET -> C#). Structurable экстеншены дают возможность настроить проект, подобный Java (с Source + Test папками, с поддержкой пакетов как у Java):

image

5. После того, как нажмем OK, будет задержка и пройдет индексация. Я не исключаю, что во время индексация вылетит Exception, если будет – отправьте мне через интерфейс.
Для проверки, нормально ли все, делаем Ctrl + N -> Console. Если вы перейдете к классу System.Console, значит все хорошо, и можно продолжать, если нет, прошу отписаться в комментариях.

6. Создаем класс. В дереве проекта делаем New -> C# Class -> `Program` -> OK и пишем обычный Hello World:

using System;

public class Program
{
    public static void Main(String[] arg)
    {
        Console.WriteLine("Hello World");
    }
}


7. Теперь нам нужно этот код запустить. Заходим в Edit Configurations -> Add -> .NET Application. Больше ничего не нужно изменять.

”image”

Сохраняем и нажимаем Run:

”image”

На этом наш тест закончен.

Хотелось бы уточнить, что это лишь начальная реализация, которую я делаю в соло режиме (почти 500 коммитов).
Она поддерживает:
• Макросы;
• Декомпиляция .NET библиотек;
• Профили (возможность смены СДК, переменных, прочее);
• Базовый поиск методов, классов, переменных, прочее;
• Подсветка, частичное заполнения, фолдинг;
• Практически весь синтаксис C#.

Но при этом, есть баги:
• Бинарные операции возвращают неверный тип;
• Макросы #if имеют привычку ломаться в больших файлах;
• Inner методы и энумы, не участвуют в поиске;
• Декомпиляция не идеальная.

Что у меня в планах?
• Исправлять баги;
• Debugging;
• NUnit, Unity, NAnt, Vistual Studio Importer, IronRuby, IronPython, и ….

Бросать я не собираюсь, время на разработку пока есть. Все ссылки можно найти в моем профиле на гитхабе.
Only registered users can participate in poll. Log in, please.
Поддержка .NET на IntelliJ платформе – реальность?
62.53% Да297
11.79% Нет56
25.68% Не сейчас122
475 users voted. 220 users abstained.
Tags:
Hubs:
+24
Comments52

Articles