如何将Razor文件添加到Xamarin项目

rdlzhqv9  于 2023-02-10  发布在  其他
关注(0)|答案(3)|浏览(153)

我试图让Razor在我的Xamarin项目中工作,但似乎无法让Visual Studio 2017识别需要由Razor预处理器处理的文件。
当我添加一个新文件时,没有Razor.cshtml的模板,所以我只是添加一个文本文件,并将扩展名更改为.cshtml,然后在文件属性中,将Custom Tool设置为RazorTemplatePreprocessor
但是,尽管这样做了,Visual Studio并没有生成我所期望的. cs文件。
我错过了什么?

    • 更新和变通办法**:由于与@SushiHangover的有益交谈(请参阅下面的答案和评论链),看来. NET标准库项目目前不允许通过添加项目向导添加Razor文件,如果手动添加,它们将无法正确编译。Visual Studio 15.5.2中确实如此。我在Microsoft中发现了一个bug,但与此同时,我有一个超级笨拙的解决方案,其如下。

说到底,您在Xamarin项目中可能使用的Razor文件只是用来生成. cs文件的,这些文件编译成包含GenerateString方法的类,代码可以调用该方法来生成HTML,然后将其提供给WebView。(* 而不是 *. NET标准)并把我所有的Razor文件都放在那里,在那个项目中,你可以正常添加,它们也能正常工作。
但是由于我的项目的其余部分是. NET标准的,并且我不想混合和匹配,所以实际上我没有让任何其他项目引用这个库。我只是 * 包含生成的. cs文件作为链接 *(单击"添加"按钮旁边的小箭头,然后选择"添加为链接")在我的"实际"项目中(我最初想添加它们的那个)。所以带有Razor文件的库只有一个用途,那就是生成. cs文件,句号。那些文件实际上被编译到了不同的库中。
我希望这能帮助到一些人!当微软修复了这个bug,我会再次更新这个线程(并将我的Razor文件移回它们应该在的地方)。

    • EDIT 2**Microsoft已将我的错误标记为"正在考虑中"。如果此问题影响到您,请投反对票,以鼓励他们尽早修复。

https://developercommunity.visualstudio.com/content/problem/172997/razor-templates-not-working-for-net-standard-proje.html

lymnna71

lymnna711#

Razor文件模板可以在Visual Studio for Mac(VS4M)的"Text Templating"组下找到,但是最近版本的Visual Studio for Windows(VS4W)中没有这些模板。
在VS4W上,您可以只编辑您尝试添加Razor文件的.csproj
1.生成的.cs文件的Compile项,其中包含.cshtml文件的DependentUpon标记。

  1. .cshtmlNone项目,包含GeneratorLastGenOutput标记
    1.创建这两个文件(.cshtml.cs)(开始时可以为空)

示例(Xamarin、iOS、Xamarin、Android和PCL项目)

<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>

示例(网络标准2.0项目)

<ItemGroup>
  <Compile Condition=" '$(EnableDefaultCompileItems)' == 'true' " Update="RazorTemplate.cs">
    <DependentUpon>RazorTemplate.cshtml</DependentUpon>
  </Compile>
</ItemGroup>

<ItemGroup>
  <None Update="RazorTemplate.cshtml">
    <Generator>RazorTemplatePreprocessor</Generator>
    <LastGenOutput>RazorTemplate.cs</LastGenOutput>
  </None>
</ItemGroup>
lf3rwulv

lf3rwulv2#

这不是答案,因为我误解了这个问题,所以答案实际上是@SushiHangover上面写的...
要获得Xamarin Razor页面,项目必须是WebViewApp,然后您可以向项目添加新的预处理Razor视图。
从Xamarin博客的主题。
请参阅我们的使用Xamarin构建混合应用程序文档,开始构建Razor Hybrid应用程序。只需使用Xamarin Studio为iOS或Android创建一个新的WebView应用程序,或将WebView添加到任何现有的iOS或Android布局中,然后使用添加新的...预处理的Razor模板将Razor支持的Web视图合并到您的Xamarin应用程序中。有关数据驱动的Razor混合应用程序的稍微复杂的示例,查看我们的RazorTodo应用程序。
The documentation can be found here
更多细节在这里,因为这详细说明了如何添加Razor视图到每个项目。

yzuktlbb

yzuktlbb3#

对于Visual Studio 2022,我建议您参考以下答案:
https://stackoverflow.com/a/41116061/812013
当我输入'RazorTemplatePreprocessor'作为文件的自定义工具时,我最初并没有注意到Visual Studio会打开一个对话框,要求您先安装一个ASP.NET扩展。一旦我安装了这个扩展,我就可以从cshtml文件生成一个cs文件。

相关问题