1.5.7895

Середина декабря — ссылки на сборки по имени и пути

C# Scripting — добавлена возможность подключать сборки по пути и имени

Уже несколько месяцев в скриптах доступна возможность подключать NuGet-пакеты:

csharp
#r "nuget: Coroutine, 2.1.5"

Log.Info("Hello, World!"); //you can use Coroutine classes in that script

Теперь эта возможность расширена: сборки можно подключать еще двумя способами.
Важно: эти способы подключения доступны только внутри Script.csx, который является аналогом вашего Program.cs в «обычном» C#.

По пути к сборке — из файла

Синтаксис очень похож:

csharp
#r "assemblyPath: D:\Work\EAExile\EAExileAgent.Shared.dll"

Log.Info("Hello, World!"); //you can use EAExileAgent classes in that script

По имени сборки

Этот способ позволяет подключать сборки, которые:

  • уже загружены EyeAuras, но не входят в список сборок, подключаемых по умолчанию
  • были загружены через Assembly.Load или любым другим способом, но уже присутствуют в AssemblyLoadContext/AppDomain
  • находятся в GAC

Исторически EA подключала по умолчанию ОЧЕНЬ много сборок — больше 300. Это экономит пользователям время на предварительной настройке зависимостей для каждого C#-действия, узла BT и т. д., но в долгосрочной перспективе такой подход не очень хорош. Постепенно я буду убирать всё больше сборок из списка подключаемых по умолчанию и добавлю более удобные механики автодополнения, чтобы нужные библиотеки можно было легко подключать прямо под ваш сценарий. В будущем это упростит обновление программы для всех.

csharp
#r "assemblyName: Grpc.Net.Client"

Log.Info("Hello, World!"); //you can use Grpc.Net.Client classes in that script

Исправления и улучшения

  • [Scripting] Исправлена проблема в rewriter для CancellationToken — в некоторых случаях он некорректно обрабатывал необязательные аргументы