1

我正在尝试IRazorViewEngine在控制台应用程序中使用<Project Sdk="Microsoft.NET.Sdk">(不是)在内存<Project Sdk="Microsoft.NET.Sdk.Web">中呈现页面。.cshtml我在ServiceProvider. 在调用以下行时,我得到一个CompilationFailedException

_viewEngine.GetView(directory, name, true); 

例外:

Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException:发生一个或多个编译失败:
kmcajniq.bah(4,20):错误 CS0400:在全局命名空间中找不到类型或命名空间名称“Microsoft”(您是缺少程序集引用?)
kmcajniq.bah(5,19):错误 CS0400:在全局命名空间中找不到类型或命名空间名称“Microsoft”(您是否缺少程序集引用?)
kmcajniq.bah(4,82 ):错误 CS0518:未定义或导入预定义类型“System.Type”
kmcajniq.bah(4,115):错误 CS0518:未定义或导入预定义类型“System.String”
kmcajniq.bah(4,132):错误 CS0518:预定义未定义或导入类型“System.String”
kmcajniq.bah(5,81):错误 CS0518:未定义或导入预定义类型“System.String”

和其他更多缺失SystemMicrosoft类型。

但是,当我将项目 sdk 更改为Microsoft.NET.Sdk.Web一切正常时。

Microsoft.NET.Sdk缺少什么,Microsoft.NET.Sdk.WebRazor 渲染有效?

4

1 回答 1

0

问题是,RazorViewEngine在运行时需要编译上下文来编译 Razor 页面。默认设置为Microsoft.NET.Sdkfalse,而设置Microsoft.NET.Sdk.Webtrue.

要解决此问题,需要将以下属性添加到.csproj文件中并设置为true

<PropertyGroup>
    <PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>

可以在此处找到有关差异的其他信息Microsoft.NET.Sdk 和 Microsoft.NET.Sdk.Web 之间的区别是什么

于 2020-01-29T14:47:22.707 回答