116

我正在尝试在我的 WPF 项目中使用 DataAnnotations 来指定字符串的最大长度,如下所示:

using System.ComponentModel.DataAnnotations;

但是,我得到了错误

命名空间“System.ComponentModel”中不存在类型或命名空间名称“DataAnnotations”(您是否缺少程序集引用?)

我已经看到了这个命名空间中DataAnnotations 确实存在的其他示例。我正在使用 C#4。我有什么理由不能使用它吗?我能做些什么来修复它?

4

16 回答 16

168

您必须引用定义此命名空间的程序集(默认情况下在 Visual Studio 模板中不引用它)。打开您的引用管理器并添加对 System.ComponentModel.DataAnnotations 程序集的引用(解决方案资源管理器 -> 添加引用 -> 选择 .Net 选项卡 -> 从列表中选择 System.ComponentModel.DataAnnotations)

于 2012-04-16T12:53:37.603 回答
38

如果使用.NET Core.NET Standard

采用:

管理 NuGet 包..

使用管理 NuGet 包

代替:

添加参考...

不要使用添加引用

于 2019-09-20T22:48:29.863 回答
13

引用 System.ComponentModel.DataAnnotations

在代码文件中有 Using System.ComponentModel.DataAnnotations; 在文件的顶部,例如:

using System.ComponentModel.DataAnnotations;

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

在此处输入图像描述

希望这可以帮助!这个问题帮助了我。

于 2014-08-01T18:02:27.703 回答
8

如果您在引用中没有它(就像我没有),您还可以添加 NuGet System.ComponentModel.Annotations 以获取程序集并解决错误。(在这里添加它,因为这个答案仍然是谷歌的错误)

于 2018-02-17T18:40:57.383 回答
4

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

于 2015-01-15T11:04:58.377 回答
2

我发现我无法在 (1) 处使用以下版本从 Silverlight 5 引用 System.ComponentModel.DataAnnotations。我发现 Silverlight 5 程序集不能使用 .NET 程序集,它给出了错误“您无法添加对 System.ComponentModel.DataAnnotations 的引用,因为它不是针对 Silverlight 运行时构建的。...”我计​​划通过以下方式解决这个问题希望安装下面 (2) 中的 Silverlight 5 软件包。如果失败,我会更新这篇文章。

[更新:失败了。我安装了与 Silverlight 5 相关的所有内容,但没有 .dll 程序集 System.ComponentModel.DataAnnotations 的 Silverlight 版本。太糟糕了。更新二:我从以前安装的用于 Visual Studio 2008 或 2010 的 Silverlight 开发人员工具包中找到了一个具有此名称的旧 .dll。我添加了这个文件,它似乎“工作”,因为 IntelliSense 现在正在识别类成员的属性,例如这 [Display(Name = "My Property Name")]. 是否适用于这个 .dll 中的其他所有内容,我不知道。]

(1)

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

安装版本:专业

(2) http://go.microsoft.com/fwlink/?LinkId=229318

于 2014-10-02T08:02:27.730 回答
2

当我遇到同样的问题时,我搜索了有关此主题的帮助。

尽管以下可能不是 2012 年最初提出的问题的答案,但对于遇到此线程的人来说,它可能是一个解决方案。

解决此问题的一种方法是检查您的项目在解决方案中的位置。事实证明,对于我的实例(我试图安装 NuGet 包但它不会并且出现列出的错误)我的项目文件未包含在解决方案目录中,尽管显示在解决方案资源管理器中。我从超出范围的目录中删除了项目并重新添加了项目,但这次是在正确的位置。

于 2018-10-23T10:20:45.180 回答
1

为您的项目使用 4.5 及更高版本的 FrameWork 即可解决问题。因为此命名空间低于 4.5 及更高版本。

于 2014-04-03T14:59:33.650 回答
1

System.ComponentModel.DataAnnotations 包含在其自己的程序集中,因此您需要确保已引用它。简单地说:

1)。右键单击解决方案并选择添加。

2)。从列表中选择参考。

3)。搜索“ System.ComponentModel.DataAnnotation ”并勾选其左侧的复选框,然后按确定。

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

于 2017-05-17T08:31:41.467 回答
0

如果您尝试将 Visual Studio 从 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

于 2014-03-26T20:05:25.777 回答
0
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 .
于 2015-01-19T09:04:39.960 回答
0

我从 Silverlight 4 升级到 Silverlight 5,然后我遇到了这个问题。尽管我在项目的“参考”下有对“System.ComponentModel.DataAnnotations”的参考,但它有一个黄色的让步标志,表明无法找到先前引用的程序集。事实证明,“System.ComponentModel.DataAnnotations”引用的属性指示“特定版本 = True”,当我将其更改为“特定版本 = False”时,它解决了这个问题。右键单击“References”下的“System.ComponentModel.DataAnnotations”程序集,然后从上下文菜单中选择“Properties”。检查“特定版本 = False”的属性值。

它一定是引用了升级到 Silverlight 5 后不再可用的旧 Silverlight 4 程序集。

于 2016-01-13T15:51:39.493 回答
0

我也有这个问题。当我添加与 System.xml 相同的命名空间时,这是非常愚蠢的。我尝试删除所有引用,但没有解决。我使用“global::System.ComponentModel”,它也可以正常工作。当我删除我的命名空间时,这个问题已经解决。

于 2018-03-25T02:10:34.920 回答
0

对于 Visual Studio 2019 中的 .Net Core,试试这个。 见 VS 建议

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

于 2020-12-22T11:51:03.117 回答
0

在 net40 中使用 System.ComponentModel.DataAnnotation 时出现问题,所以我这样做了:

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

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

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

于 2021-12-03T00:50:24.450 回答
-6

我有同样的问题,我通过以下方式解决了这个问题。

右键单击页面,选择属性。在构建操作中选择内容。

希望这个解决方案可以帮助你。

于 2014-03-25T19:46:07.273 回答