TL; DR; Есть ли способ сообщить CompilationLibrary.ResolveReferencePaths, где искать ссылки?
Я пытался изменить текущий рабочий каталог и даже пытался изменить текущий базовый каталог AppDomain, но безрезультатно.
Поэтому моя команда в настоящее время использует RazorLight для обработки шаблонов сообщений в консольном приложении .Net Core 2.2.
Я добавил RazorLight 2.0.0-beta1 в библиотеку .Net Standard 2.0 и создал для нее интерфейс. Однако мы обнаружили, что возник конфликт с другой библиотекой, которую мы использовали из-за этой библиотеки, использующей C DLL. Чтобы разрешить конфликт, мы решили удалить другую библиотеку, используя C DLL, поскольку никто еще не использовал ее функциональность. Тем не менее, теперь мы находимся в точке, где нам нужны оба.
К счастью, RazorLight позволяет вам указать сборку для использования в качестве корня. Поэтому я создал базовый проект пустой библиотеки (RazorScope), в котором нет других библиотек, кроме RazorLight и нашей библиотеки моделей.
RazorScope имеет флаг PreserveCompilationContext для true в своем csproj.
У меня есть событие перед сборкой в нашем консольном приложении для публикации RazorScope в корневой папке решения / RazorScope, а затем событие после сборки и после публикации, которое копирует публикацию RazorScope в сборку / публикацию приложения консоли. Я выбрал этот путь из-за папки «refs», которую создает PreserveCompilationContext, и я хотел, чтобы все было чисто. Если я просто добавлю RazorScope в качестве ссылки на проект консольного приложения, он не будет извлекать эти ссылки или файл json.deps для RazorScope ...
Проблема заключается в том, что когда RazorLight в конце концов вызывает CompilationLibrary.ResolveReferencePaths, он терпит неудачу b / c, он отказывается искать в папке RazorScope в каталоге bin / publish и ожидает, что все будет непосредственно в базовом каталоге. Если я перенесу refs и другие файлы в базу, она будет работать нормально, но теперь я испачкал мой каталог консольных задач bin / publish.
Есть ли способ сообщить CompilationLibrary.ResolveReferencePaths, где искать ссылки?