【发布时间】:2018-10-09 08:24:08
【问题描述】:
我知道以前有人问过类似的问题,但唯一的答案是六年前的,人们提到的项目似乎没有得到维护。
我想在控制台应用程序或类库中使用 Razor 来呈现 HTML。我还想在 .cshtml 文件中使用 Intellisense。
目前,我可以通过以下方式进行陪审:
- 创建控制台应用程序。
- 添加 .cshtml 文件。
- 在“属性”中,将
Custom Tool属性设置为RazorTemplatePreprocessor
这会导致 Razor 语法被识别。因此,如果您有 Test.cshtml,它会生成一个名为 Test 的类,您可以像这样使用它:
var test = new Test();
test.Model = "Hi there";
var html = test.GenerateString();
Console.WriteLine(html);
这对于我的目的来说已经足够了。但是,.cshtml 文件中的实际编码体验非常糟糕:
- 到处都是红色的花花公子在抱怨:
- 无法使用
var,因为它是 C# 2。 - 说各种类型的类型或者命名空间都找不到。
- 从其他库导入的类型尤其如此。
-
@model关键字无法识别。 - Intellisense 有时有效,有时无效。
奇怪的是,如果您忽略所有这些错误,HTML 实际上会正确生成,包括使用 Razor 引擎抱怨的库和 @model 关键字。但是,这会导致严重的精神混乱,因为如果您有任意数量的 .cshtml 文件,您很快就会遇到成百上千的错误与实际错误混合在一起。
我可以做些什么来使实际的 Razor 编码体验更像在 ASP.NET Web 应用程序中那样工作?
【问题讨论】:
-
在这里查看我 6 个月大的答案:stackoverflow.com/a/47756437/403671 这是纯粹的剃须刀,没有任何 ASP.NET 或 MVC 依赖项。请注意,.cshtml 文件不是“razor”文件,它们是 ASP.NET MVC,因此您不会在 razor 控制台应用程序中拥有它(除非您以某种方式模拟它)。
-
@SimonMourier 感谢您的回复。这真是太棒了!一个缺点是,这个想法似乎是将文件作为没有编辑器支持的文本来处理。有没有办法在 Visual Studio 中获得一些基本的设计时支持,以便它能够识别 Razor 块和 HTML,例如?
-
这个我不知道,也没有调查过。
-
您可以简单地使用run-time t4 templates。您可以下载/克隆一个工作示例here。
标签: c# razor console-application