我试图让Razor在我的Xamarin项目中工作,我似乎无法让Visual Studio 2017认识到文件需要由Razor预处理器处理。
当我去添加新文件时,Razor
或.cshtml
没有模板,所以我只是添加一个文本文件并将扩展名更改为{{ 1}}。然后,在文件属性中,我将.cshtml
设置为Custom Tool
。
但是,尽管这样做,Visual Studio也不会生成我期望的.cs文件。
我错过了什么?
更新和解决方法:由于与@SushiHangover的有用对话(请参阅下面的答案和评论链),似乎.NET标准库项目目前不允许通过以下方式添加Razor文件添加项目向导,如果您手动添加它们,它们无法正确编译。从Visual Studio 15.5.2开始就是如此。我已经向微软公开了一个错误,但与此同时,我有一个超级笨重的解决方法,如下所示。
在一天结束时,您可能在Xamarin项目中使用它们的Razor文件只会生成.cs文件,这些文件会编译成包含RazorTemplatePreprocessor
方法的类,该代码可以调用生成HTML然后可以将其输入WebView。所以,我想,为什么不创建一个常规的.NET Framework库(不 .NET Standard)并将所有Razor文件放在那里。在该项目中,您可以正常添加它们并且它们可以正常工作。
但由于我的项目的其余部分是.NET Standard而且我不想混合搭配,所以我实际上没有任何其他项目参考这个库。相反,我只是将生成的.cs文件包含为链接(单击“添加”按钮旁边的小箭头,然后选择“添加为链接”)在我的"真实"项目(我最初要添加它们的那个)。因此具有Razor文件的库只有一个目的,那就是生成.cs文件,句点。这些文件实际上被编译到不同的库中。
我希望这有助于某人!当Microsoft修复该错误时,我将再次更新此线程(并将我的Razor文件移回原来应该的位置)。
编辑2 微软已经标记了我的错误"正在考虑中。"如果这个问题对您有影响,请对其进行投票,以鼓励他们尽早解决问题。
答案 0 :(得分:4)
Razor文件模板在VS4M
组下的Visual Studio for Mac("Text Templating"
)上可用,但最新版本的Visual Studio for Windows(VS4W
)已丢失
在VS4W上,您只需编辑试图添加Razor文件的.csproj
:
生成的Compile
文件的.cs
项,其中包含DependentUpon
文件的.cshtml
标记。
None
的{{1}}项,其中包含.cshtml
和Generator
代码
创建这两个文件(LastGenOutput
& .cshtml
)(它们可以为空启动)
.cs
<ItemGroup>
<Compile Include="RazorTemplate.cs">
<DependentUpon>RazorTemplate.cshtml</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="RazorTemplate.cshtml">
<Generator>RazorTemplatePreprocessor</Generator>
<LastGenOutput>RazorTemplate.cs</LastGenOutput>
</None>
</ItemGroup>
答案 1 :(得分:0)
这不是答案,因为我误解了这个问题所以答案实际上就是@SushiHangover所提出的......
要获取Xamarin Razor页面,项目必须是WebViewApp,然后您可以将New PreProcessed Razor View添加到项目中。
来自Xamarin博客的主题。
请参阅我们使用Xamarin文档构建混合应用程序,开始构建Razor Hybrid应用程序。只需使用Xamarin Studio为iOS或Android创建新的WebView应用程序,或将WebView添加到任何现有的iOS或Android布局,并使用Add New ... Preprocessed Razor Template将Razor支持的Web视图合并到您的Xamarin应用程序中。有关数据驱动的Razor混合应用程序的稍微复杂的示例,请查看我们的RazorTodo应用程序。
The documentation can be found here
More detail here,因为这详细说明了如何将Razor视图添加到每个项目中。