RazorViewEngineOptions.CompilationCallback устарел ...
... когда подробная информация, предоставленная MS , рекомендует настраивать сборки с ApplicationPartManager.AddApplicationPart
вместо CompilationCallback:
Приложения, использующие эти API для добавления ссылок на сборки в компиляцию
контекст для компиляции во время выполнения должен вместо этого использовать
ApplicationPartManager.AddApplicationPart, чтобы добавить части приложения для
ссылка на каждую сборку
Но AddApplicationPart
можно применить только к IMvcBuilder, когда для запуска ядра asp в собственном процессе мы используем WebHostBuilder
(который не является производным от IMvcBuilder)
var hostBuilder = new WebHostBuilder()
// contains obsolete code
//.ConfigureServices(TestManager.InitializeServices)
.AddApplicationPart(..); // compilation error, impossible to apply, IMvcBuilder expected !
Как AddApplicationPart
следует называть? Где взять IMvcBuilder
?
Ранее использованный код (собирает сборки для asp сервера), который следует заменить на AddApplicationPart
:
public static void InitializeServices(IServiceCollection services){
services.Configure((RazorViewEngineOptions options) =>
{
var previous = options.CompilationCallback;
options.CompilationCallback = (context) =>
{
previous?.Invoke(context);
var assembly = typeof(Startup).GetTypeInfo().Assembly;
var assemblies = assembly.GetReferencedAssemblies().Select(x => MetadataReference.CreateFromFile(Assembly.Load(x).Location))
.ToList();
assemblies.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("mscorlib")).Location));
...