2012-04-16 118 views
60

我试图使用DataAnnotations在我的WPF项目以指定字符串的最大长度,有以下几点:为什么我不能引用System.ComponentModel.DataAnnotations?

using System.ComponentModel.DataAnnotations; 

但是,我得到的错误

类型或命名空间名称DataAnnotations'并不在 命名空间存在‘System.ComponentModel’(是否缺少程序集 参考?)

我见过的其他例子Wh是在此命名空间中存在DataAnnotations确实存在。我正在使用C#4。我有什么理由不能使用它?我能做些什么来解决它?

+0

你有没有安装MVC?我相信DataAnnotations属于那个包 – dougajmcdonald 2012-04-16 12:53:44

+3

也许你“缺少一个程序集引用”。 – phoog 2012-04-16 12:57:35

+1

错误消息旨在提供帮助,不会被忽略。 – 2012-04-16 12:58:57

回答

120

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

+2

这里奇怪的是,VS不能给我这个正常的'潜在修复'。想知道为什么... – 2016-12-06 22:41:57

-5

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

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

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

+0

你指的是哪一个“页面”?那对此有何帮助? – Crono 2014-09-24 20:58:03

+0

呃,这真的是错误的。如果您在构建过程中将项目元素视为“内容”,则会失去其行为。所以如果你在一个类上做,它将不再被编译,它的代码将不会被调用。相反,它将作为文件复制到程序编译输出的二进制文件中。这就是为什么你会停止接收编译错误,但它绝对不是一个编译问题的解决方案。 – 2015-05-12 17:42:28

0

如果您尝试将vs2008的visual studio更新为vs2010。你的应用程序使用框架3.5(并且你不想升级它),并且还使用了WCF RIA服务BETA ...我有坏消息...你必须升级到WCF RIA Services v1(测试版在vs2010上不起作用)......并且由于这个......你还必须安装Silverlight 4 +升级到框架4.0

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

2

使用框架版本4.5及以上的为你的项目,然后问题就解决了。因为这个命名空间在4.5以下。

+1

这是不正确的。请参阅[这里](https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations(v = vs.100).aspx) – itsho 2015-02-06 14:22:10

+0

我使用.NET 4.5.x,它不包含。但是,那么我不使用MVC。这个应用程序是一个没有UI的控制台应用程序,将作为一个cron工作每天运行一次。我只想在表示数据成员的类中使用DataAnnotations,这些数据成员将存储从每个SQL Server表行中检索的列中的数据。我会尝试手动添加它作为参考。 – MiddleAgedMutantNinjaProgrammer 2016-10-13 15:15:07

+0

看看它; [这里](https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations(v = vs.110).aspx#Interfaces) – user2090762 2016-10-14 00:35:14

5

向参考System.ComponentModel.DataAnnotations

在代码文件以具有使用System.ComponentModel.DataAnnotations;在文件的顶部,如:

using System.ComponentModel.DataAnnotations; 

通过右键单击该项目在解决方案资源管理器项目中添加一个.NET参考:

enter image description here

希望这有助于!这个问题帮助了我。

2

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

[更新:失败。我安装了所有与Silverlight 5有关的东西,而且我没有Silverlight版本的.dll程序集System.ComponentModel.DataAnnotations。太糟糕了。更新二:我发现一个旧的.dll具有以前安装的用于Visual Studio 2008或2010的Silverlight开发人员工具包的名称。我添加了此文件并且它似乎“有效”,因为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

+0

更新III - 我无法在Silverlight 5的客户端上使用System.ComponentModel.DataAnnotations.dll,但奇怪的是在服务器端Silverlight项目使用此.dll的.NET v4.5.1版本就好了。但客户端不会接受.NET版本,并且需要这个.dll的Silverlight版本,这个日期我在任何地方都找不到。所以你必须在客户端不做。 – PaulDecember 2014-10-02 16:53:56

4

我也有同样的问题,我解决了在我没有提到参考的项目之一中添加引用。如果您的解决方案中有2-3个项目,请将该参考添加到其他项目中。

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 . 
0

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

那一定是引用旧Silverlight 4的组件,该组件是升级到Silverlight的5之后不再

0

System.ComponentModel.DataAnnotations都包含在其自己的组装,所以你需要确保你拥有了它refernced。简单地说:

1)。右键单击Soloution并选择添加。 2)。从列表中选择参考。 3)。搜索“System.ComponentModel.DataAnnotation”并勾选其左侧的复选框,然后按确定。

工作完成,不应该有任何引用错误。

0

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

相关问题