【发布时间】:2020-09-01 12:48:12
【问题描述】:
作为 ASP.NET Core 3.1 Razor Pages Web 应用程序工作的一部分,我创建了几个自定义标记帮助程序。一旦我按照我想要和预期的方式完成所有这些工作(作为 ASP.NET Core 3.1 应用程序的一部分),我将 Tag Helpers 移动到 Razor 类库 (.NET Standard 2.1),因此我可以使用自定义 Tag其他应用程序中的助手。
这就是我在标签助手使用 PartialTagHelper 类呈现部分页面时遇到问题的地方:
TypeLoadException:无法加载类型 'Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.IViewBufferScope' 来自 程序集'Microsoft.AspNetCore.Mvc.ViewFeatures,版本=3.1.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'。
PartialTagHelper 类的构造函数需要此错误中指出的 IViewBufferScope 参数,并通过依赖注入传递到自定义 Tag Helper 代码中。
在 ASP.NET Core 3.1 Razor 页面中,自定义 Tag Helper 代码需要对 Microsoft.AspNetCore.Mvc.ViewFeatures.Buffers 命名空间的“使用”引用。
在 Razor 库中,自定义标记帮助程序代码需要对 Microsoft.AspNetCore.Mvc.ViewFeatures.Internal 命名空间的“使用”引用。
我还尝试使用 .NET Standard 2.0 和 2.1 以及 .NET Core 3.1 类库。在所有这些情况下,类库都需要引用 Microsoft.AspNetCore.Mvc.ViewFeatures 版本 2.2.0 和 Microsoft.AspNetCore.Razor 版本 2.2.0 才能编译。
因此,错误听起来像是 ASP.NET Core 3.1 Razor Page 正在注入 3.1.3 Microsoft.AspNetCore.Mvc.ViewFeatures 程序集,而这不包含来自正确程序集的 IViewBufferScope 参数。
有没有办法解决这个问题?
谢谢
【问题讨论】:
-
为什么Razor 类库 而不仅仅是类库 然后创建nuget package?
-
感谢您的回复。我更新了我的帖子,因为我尝试了各种类型的类库并且在所有情况下都得到相同的错误。我确实做了一个 nuget 包而不是项目引用,但我仍然得到同样的错误。
标签: asp.net-core razor-pages .net-standard renderpartial tag-helpers