为什么我不能引用 System.Component 模型。 DataAnnotions?

我试图在我的 WPF 项目中使用 DataAnnotions 来指定字符串的最大长度,具体如下:

using System.ComponentModel.DataAnnotations;

然而,我得到了错误

The type or namespace name 'DataAnnotations' does not exist in the 命名空间‘ System.Component 模型’(是否缺少程序集 参考?)

我已经看到了 DataAnnotations 是的存在于这个名称空间中的其他示例。我用的是 C # 4。我为什么不能用这个?我该怎么做才能弥补?

156294 次浏览

您必须引用定义此命名空间的程序集(默认情况下,在可视化工作室模板中不会引用此命名空间)。打开引用管理器并添加对系统的引用。组件模型。DataAnnotions 程序集(解决方案资源管理器-> 添加引用-> 选择。Net tab-> select System.组件模型。数据注释)

我也有同样的问题,我用以下方法解决了这个问题。

右键单击页面,选择 Property。

希望这个解决方案对你有所帮助。

如果您尝试将视觉工作室从 vs2008更新到 vs2010。你的应用程序使用了框架3.5(你不想升级它) ,还使用了 WCF RIA Services BETA... ... 我有个坏消息... ... 你必须升级到 WCF RIA Services v1(BETA 在 vs2010上不能工作) ... ... 由于这个原因... ... 你还必须安装 Silverlight 4 + 升级到框架4.0

看这个: http://blog.nappisite.com/2010/05/updating-visual-studio-2008net-35-ria.html

对于您的项目,使用 FrameWork 4.5及以上版本,然后问题就解决了。因为这个名称空间低于4.5或更高。

参考系统。组件模型。数据注释

在具有 UseSystem.Component 模型. DataAnnotions 的代码文件中; 在文件的顶部,如:

using System.ComponentModel.DataAnnotations;

通过右键单击解决方案资源管理器中的项目,向项目添加.NET 引用:

enter image description here

希望这个对你有帮助! 这个问题对我有帮助。

我发现我不能参考系统。组件模型。来自 Silverlight 5的 DataAnnotions,下面的版本是(1)。我发现 Silverlight 5程序集不能使用。NET 程序集时,它会给出错误“ You can’t add a reference to System”。组件模型。DataAnnotions,因为它不是针对 Silverlight 运行时构建的。我计划通过希望安装下面(2)中的 Silverlight 5软件包来解决这个问题。如果失败了,我会更新这篇文章。

[更新: 它失败了。我安装了所有与 Silverlight 5相关的东西,但是我没有 Silverlight 版本的。Dll 装配系统 dll 装配系统。组件模型。数据注释。真可惜。更新 II: 我发现了一个旧的。Dll 的名字来自于以前安装的用于 VisualStudio2008或2010的 Silverlight 开发人员工具包。我添加了这个文件,它似乎“工作”,因为 IntelliSense 现在正在识别类成员的属性,比如 [Display(Name = "My Property Name")].。我不知道

(1)

Microsoft Visual Studio Professional 2013
Version 12.0.21005.1 REL
Microsoft .NET Framework
Version 4.5.51641

安装版本: 专业版

Http://go.microsoft.com/fwlink/?linkid=229318

我也有同样的问题,我通过在我的一个项目中添加引用来解决这个问题,这个项目中没有提到的引用。如果您的解决方案中有2-3个项目,那么通过将此引用添加到其他项目来进行检查。

This error occurs when the reference to the "System.dll" got removed.Solution to the problem is very simple add the reference to "System.dll".The dll is normally available in the following location
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" .Add the reference your problem will get solved .

我从 Silverlight 4升级到 Silverlight 5,然后我遇到了这个问题。虽然我提到了“系统”。组件模型。在我的项目的“ References”下,它有一个黄色的屈服符号,表示找不到以前引用的程序集。结果表明,“系统”的属性。组件模型。“ DataAnnotions”引用指示“具体版本 = 真”,当我将其更改为“具体版本 = 假”时,它修复了这个问题。在「系统」上按滑鼠右键。组件模型。“引用”下的“ DataAnnotions”程序集,并从上下文菜单中选择“属性”。检查“ SpecifiedVersion = False”的属性值。

它一定是引用了旧的 Silverlight 4组件,在升级到 Silverlight 5之后就不再可用了。

系统。组件模型。DataAnnotions 包含在它自己的程序集中,因此您需要确保引用了它。很简单:

右键单击“解决方案”并选择“添加”。

2). Choose reference from the list.

3). Search " System.ComponentModel.DataAnnotation " and tick the check box on its left hand side and press ok.

工作完成,不应有任何参考错误。

如果你没有它的参考(像我没有) ,你也可以添加 NuGet 系统。组件模型。用于获取程序集和解决错误的注释。(添加到这里,因为这个答案仍然是谷歌的最高错误)

我也有这个问题。 这是非常愚蠢的,当我添加一个与 System 相同的名称空间。我尝试删除所有引用,但它没有得到解决。我用的是“ global: : System”。组件模型”,它也正在工作。 当我删除我的名称空间时,这个问题已经解决了。

当我遇到同样的问题时,我在这个主题上寻求帮助。

虽然以下可能不是最初在2012年提出的问题的答案,但对于那些遇到这个问题的人来说,它可能是一个解决方案。

解决这个问题的一种方法是检查项目在解决方案中的位置。对于我的实例(我试图安装一个 NuGet 包,但是没有安装,出现了列出的错误) ,我的项目文件没有包含在解决方案目录中,尽管显示在解决方案资源管理器中。我将项目从目录中删除出作用域,并重新添加了项目,但这次是在正确的位置。

If using .NET 核心 or .NET 标准

用途:

Manage NuGet Packages..

Use Manage NuGet Packages

而不是:

添加参考文献..。

Don't use Add Reference

For .Net Core in Visual Studio 2019 try this. 见 VS 建议

对我有用,希望对你也有用。

在 net40中使用 System.Component entModel.DataAnnote 有一个问题,所以我就这样做了:

#if !NET40
using System.ComponentModel.DataAnnotations;
#endif


#if !NET40
[StringLength(256)]
#endif

NET40必须是.Net Framework 4.0的预定义宏定义

我从.Net Framework 4.7.2转移到.Net Standard 2.0。

In my case, I had to change DataAnnotations's reference from an Assembly reference to a Nuget package.