Код, скомпилированный с использованием System.CodeDom
, обычно не может иметь доступ к коду, загруженному в F # Interactive - CodeDom, по сути, записывает исходный код C # / F # на диск, а затем вызывает компилятор командной строки для кода (и компилятор командной строкине может ссылаться на код, загруженный в F # Interactive).
Возможно, есть способ заставить его работать - Вы можете использовать провайдера F # CodeDom из PowerPack .Вы можете изменить его, чтобы сгенерировать исходный код (как это происходит в настоящее время), а затем отправить сгенерированный код в F # Interactive (вместо вызова компилятора командной строки).Таким образом, код, скомпилированный на лету, может видеть интерактивный код F #.
Есть некоторые проблемы, которые необходимо решить
- Можно ли предоставить своего собственного поставщика CodeDomRazorEngine?
- Поставщик F # CodeDom может некорректно обрабатывать код, сгенерированный Razor (поэтому вам может потребоваться исправить некоторые проблемы в поставщике F # CodeDom).Вам также может понадобиться изменить его, чтобы он генерировал код, который прекрасно работает с F # Interactive (например, удаляет пространства имен верхнего уровня)
- Какой экземпляр F # Interactive вы хотите использовать?(И как получить стандартный ввод, чтобы вы могли отправить туда свой код)
- Вам нужно загрузить скомпилированную сборку и передать ее обратно в Razor?Я не уверен, что это можно сделать с помощью F # Interactive.
Все это зависит от вашего сценария - но я предполагаю, что возможно получить то, что вы хотите (возможно, с некоторыми обходными путями).