无法在asp.net vnext类库中使用必需属性

weixin_38053335 2019-09-12 03:28:27

更新:当然,我试图添加using System.ComponentModel.DataAnnotations。它不起作用。 问题:我不能在asp.net vnext类库项目中使用Required属性。 案例: 1.添加默认设置的asp.net vnext类库项目。 2.创建带有字符串属性Name的类Human。 3.将Required属性添加到Name。 4.获取编译错误: Error CS0246 The type or namespace name 'Required' could not be found (are you missing a using directive or an assembly reference?) 下面是我的project.json: { "version": "1.0.0-*", "dependencies": { "System.ComponentModel.Annotations": "" }, "frameworks": { "aspnet50": { }, "aspnetcore50": { "dependencies": { "System.Runtime": "" } } } } 我也可以在asp.net vnext使用DataAnnotations,但不能在vnext类库。为什么?








...全文
20 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38058190 2019-09-12
  • 打赏
  • 举报
回复

vNext web项目依赖于Microsoft.AspNet.Mvc。这拉动依赖的大树,数据注解是包Microsoft.DataAnnotations 下添加一个依赖于Microsoft.DataAnnotations使用数据契约属性。 在你project.json文件更改 "dependencies": { "System.ComponentModel.Annotations": "" }, 到 "dependencies": { "Microsoft.DataAnnotations": "1.0.0-beta1" }, 更换1.0.0-β1与任何当前版本号。 Visual studio会自动为你完成它。 为什么Microsoft.DataAnnotations工作,而不是System.ComponentModel.Annotations? 从一个小调查System.ComponentModel.Annotations包含两个目标 aspnetcore50\System.ComponentModel.Annotations.dll contract\System.ComponentModel.Annotations.dll 的aspnetcore50总成是新核心CLR。它包含Required属性,适用于Core CLR。 contract程序集包含所有类型,但方法为空。这就像是一个虚拟的依赖关系,必须由框架来完成。此虚拟程序集在.NET 4.5上使用,这就是为什么您的项目同时针对.NET 4.5和Core CLR无法找到Required属性。 另一方面,Microsoft.DataAnnotations包取决于System.ComponentModel.Annotations,但也引用框架程序集System.ComponentModel.DataAnnotations,它实际上提供了在.NET 4上运行时的类型。5 我觉得这篇文章有趣。它解释了这些合约集合在帖子末尾的含义。 http://alxandr.me/2014/07/20/the-problems-with-portable-class-libraries-and-the-road-to-solving-them/

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧