Ссылка на локальный csproj из скрипта C#
Я экспериментировал со сценарием C# (*.csx), чтобы выполнить некоторую обработку данных с результатами вызовов сервисов для некоторых внутренних API. Пока это было довольно гладко, но сейчас я пытаюсь вызвать некоторые методы из проекта C#, к которому у меня есть доступ. Проект C# не имеет опубликованного пакета nuget, что означает прямую ссылку на dll с использованием #r
, Однако, чтобы получить доступ к необходимым функциям, я обнаружил, что мне также нужно добавить ссылки в начало моего скрипта для любых зависимостей этого проекта и любых пакетов nuget, которые использует зависимость.
#r "PATH_TO_SOLUTION\Project\bin\Debug\netstandard2.0\binary.dll"
#r "PATH_TO_SOLUTION\ProjectDependency\bin\Debug\netstandard2.0\dependent.dll"
#r "nuget: Some.Dependency, 11.0.2"
#r "nuget: Some.Other.Dependency, 10.0.2"
#r "nuget: Some.Third.Dependency, 9.0.2"
using Project;
Я новичок в мире сценариев C# и не нашел ничего, что напрямую касалось бы этого вопроса, так что, надеюсь, я не задаю здесь ничего сверхъестественного.
Некоторые проекты зависят от довольно большого количества пакетов nuget. Существует ли способ ссылки на csproj из сценария C#, который не требует явной ссылки на все зависимости для проекта?
Дайте мне знать, если есть какая-либо дополнительная информация, которую я могу предоставить.
1 ответ
Обратите внимание на основные сценарии.NET - C# в документах Microsoft:
Вы можете взять весь листинг и сохранить его как файл CSX, а затем "импортировать" или "встроить" файл в окно C# REPL с помощью #load Spell.csx. Директива #load позволяет вам включать дополнительные файлы сценариев, как если бы все файлы #load были включены в один и тот же "проект" или "компиляцию". Помещение кода в отдельный файл сценария C# обеспечивает тип рефакторинга файла и, что более важно, способность сохранять сценарий C# с течением времени.
Возьмите все ссылки, сохраните их как файл CSX и сделайте снимок.
например:
//Load scripts
#load "Script.csx"
using Project;