PascalABC.NET 4.1
Главное в PascalABC.NET 4.1 — интеграция .NET 10 в привычную среду разработки для Windows и поддержка NuGet-пакетов.
Дата выпуска: 20 октября 2026 года.
В версии 4.0 появилась поддержка современной платформы .NET и официальное расширение для VS Code. В версии 4.1 компиляция и запуск программ для .NET 10 доступны непосредственно в основной Windows IDE, вместе с подсказками по коду, навигацией и восстановлением пакетов. Для этого скачайте PascalABC.NET 4.1 Net10Pack для Windows.
.NET 10 в основной среде разработки
В меню «Программа» появился переключатель .NET 10. В выбранном режиме работают привычные команды компиляции, запуска и остановки программы.
Режим .NET Framework сохранён: можно выбирать платформу для конкретной задачи, не меняя среду разработки.
Для работы компилятора .NET 10 не требуется устанавливать .NET SDK — достаточно .NET 10 Runtime. Восстановление NuGet-пакетов также выполняется без SDK.
Переключатель .NET 10 после перезапуска IDE не сохраняется: для следующего сеанса этот режим нужно выбрать снова.
IntelliSense и навигация для .NET 10
При выборе .NET 10 доступны:
- подсказки имён и членов типов;
- подсказки параметров процедур, функций и методов;
- информация об элементах программы при наведении указателя;
- навигация по коду;
- подсветка доступного перехода и переход по Ctrl.
Таким образом, работа с современной платформой не ограничивается компиляцией из командной строки: основные средства редактирования доступны в привычной оболочке PascalABC.NET.
Графика, Робот и Чертёжник для .NET 10
В Windows в режиме .NET 10 уже работают графические модули GraphWPF и GraphABC, а также школьные исполнители Робот и Чертёжник.
Графические программы и задания с исполнителями можно компилировать и запускать для .NET 10, выбрав этот режим в меню «Программа».
NuGet-пакеты: директива package
Библиотеку из NuGet можно подключить непосредственно в исходном тексте программы. В директиве {$package ...} указываются имя пакета и точная версия.
Например, с библиотекой NodaTime найдём дату окончания проекта, который начинается 20 октября 2026 года и длится 100 календарных дней, а также определим день недели:
{$package NodaTime 3.2.4}
uses NodaTime;
begin
var start := new LocalDate(2026,10,20);
var deadline := start.PlusDays(100);
Println($'{deadline.Day}.{deadline.Month}.{deadline.Year}');
Println(deadline.DayOfWeek.ToString);
end.
Результат:
28.1.2027
Thursday
Метод PlusDays учитывает длины месяцев и переход на следующий год. Исходная дата start не меняется: метод возвращает новое значение LocalDate. Свойство DayOfWeek определяет день недели; здесь Thursday означает четверг. Вывод даты задан явно, поэтому не зависит от регионального формата даты на компьютере.
При компиляции или запуске пакет и его транзитивные зависимости восстанавливаются автоматически. Восстановление выполняется через библиотеки NuGet, с использованием общего кеша пакетов и источников из NuGet.Config. Источник по умолчанию — nuget.org.
Если необходимые пакеты уже находятся в кеше, повторно загружать их не требуется. Для загрузки отсутствующих пакетов нужен доступ к соответствующему источнику.
Подсказки имён пакетов и версий
Внутри директивы {$package ...} по Ctrl+Space доступны:
- поиск имён NuGet-пакетов;
- список доступных версий;
- описание пакета в боковой области подсказки.
При выборе имени пакета вставляется последняя найденная стабильная версия. Её можно заменить другой доступной версией.
Восстановление пакетов запускается при компиляции или выполнении программы либо при нажатии кнопки «Восстановить пакеты» в строке статуса.
Если подсказки по типам пакета нужны ещё до первой компиляции, нажмите эту кнопку.
Пример: SQLite через NuGet
Подключение Microsoft.Data.Sqlite позволяет работать с базой SQLite:
{$package Microsoft.Data.Sqlite 10.0.13}
uses Microsoft.Data.Sqlite;
begin
var connection := new SqliteConnection('Data Source=:memory:');
connection.Open;
var command := connection.CreateCommand;
command.CommandText := 'select 40 + 2';
Println(command.ExecuteScalar);
command.Dispose;
connection.Dispose;
end.
Результат:
42
Программа создаёт базу данных в памяти и выполняет SQL-запрос. Пакет SQLite и его зависимости восстанавливаются по директиве в начале программы.
Пакеты с нативными зависимостями
Для Windows x64 проверена работа ряда пакетов, использующих не только управляемые сборки, но и нативные библиотеки:
Microsoft.Data.Sqlite;- Math.NET с MKL;
- примеры ML.NET и LightGBM.
Это не означает совместимость с любым NuGet-пакетом. Пакеты, которым нужны специальные действия MSBuild, особые условия установки или платформенные компоненты, могут требовать дополнительной поддержки. Результаты проверки Windows x64 не следует автоматически переносить на другие платформы.
Публикация программы с зависимостями
Команда «Опубликовать» для .NET 10 создаёт папку publish с программой и необходимыми зависимостями. В зависимости от настроек она размещается в папке программы или в папке Output. Запуск опубликованной программы не зависит от локального NuGet-кеша компьютера разработчика.
Это удобно для переноса программы на другой компьютер: вместо поиска отдельных библиотек используется подготовленная папка публикации.
Перезагрузка пользовательских DLL
В компиляторе .NET 10 реализована выгрузка и повторная загрузка подключаемых пользовательских DLL через AssemblyLoadContext.
После пересборки такой библиотеки долгоживущий компилятор может подхватить её обновление без перезапуска. Это упрощает работу с собственными библиотеками, когда программа и используемая DLL развиваются одновременно.
Совместимость и варианты поставки
- StandardPack остаётся вариантом для .NET Framework 4.7.2.
- Для компиляции и запуска на .NET 10 в основной Windows IDE предусмотрена поставка Net10Pack.
- Расширение VS Code 0.5.1 пока содержит PascalABC.NET 4.0 и обновляется отдельно.