我正在使用RazorGenerator https://github.com/RazorGenerator/RazorGenerator将我的菜单外包给DLL文件,以便我可以在多个项目中共享它。在这些视图中,我有一个foreach循环,它应该生成如下列表:
@foreach (var myItem in MyClass.Instance.Elements) {
<li>
<img src="@myItem.Icon" />
</li>
}
但是我无法编译它们:由RazorGenerator生成的MyView.generated.cs文件为img标记创建了以下行:
WriteAttribute("src", Tuple.Create(" src=\"", 1038), Tuple.Create("\"", 1057)
这是问题所在,因为我收到了一个错误,即“WriteAttribute&#39;没有定义。我无法找到有关此方法的许多信息,似乎这是来自RazorGenerator的方法。
奇怪的是,我之前在测试项目中测试了相同的代码,因为它是我第一次使用RazorGenerator。在那里它使用相同的循环,但我无法找出任何差异。两个项目在同一版本中具有相同的引用和程序集。我发现WriteAttribute()来自WebPageExecutionBase。
我该如何解决这个问题?
答案 0 :(得分:0)
通过检查两个项目中的每个包,我发现NuGet-Package Microsoft.ASP.NET.WebPages安装在一个outdatet版本中。无法弄清楚为什么,因为我使用了&#34;更新全部&#34;项目的NuGet-Manager中的按钮就像我在测试项目中所做的那样,没有显示任何错误。我在编写这篇文章时使用NuGet-Console将软件包更新到3.1.2的最新版本,现在它按预期工作。
答案 1 :(得分:0)
不要像上面建议的那样将Build Action设置为none,因为本地副本不会生成正确的generated.cs文件。