我正在尝试在我的 WPF 项目中使用 DataAnnotations 来指定字符串的最大长度,如下所示:
using System.ComponentModel.DataAnnotations;
但是,我得到了错误
命名空间“System.ComponentModel”中不存在类型或命名空间名称“DataAnnotations”(您是否缺少程序集引用?)
我见过其他示例,其中DataAnnotations
确实 存在于此命名空间中。我正在使用 C#4。我有什么理由不能使用它吗?我能做些什么来修复它?
System.ComponentModel
并在其中使用了各种其他组件。根据下面的@Hari,似乎 DataAnnotations
存在于它自己的程序集中。我认为它会存在于 System.ComponentModel
中,因为它位于同一个命名空间中。
您必须引用定义此命名空间的程序集(默认情况下在 Visual Studio 模板中不引用它)。打开您的引用管理器并添加对 System.ComponentModel.DataAnnotations 程序集的引用(解决方案资源管理器 -> 添加引用 -> 选择 .Net 选项卡 -> 从列表中选择 System.ComponentModel.DataAnnotations)
如果使用 .NET Core 或 .NET Standard
利用:
管理 NuGet 包..
https://i.stack.imgur.com/h0Fnr.png
代替:
添加参考...
https://i.stack.imgur.com/yJjql.png
dotnet add package System.ComponentModel.Annotations
引用 System.ComponentModel.DataAnnotations
在代码文件中有 Using System.ComponentModel.DataAnnotations;在文件的顶部,例如:
using System.ComponentModel.DataAnnotations;
通过右键单击解决方案资源管理器中的项目,为您的项目添加 .NET 引用:
https://i.stack.imgur.com/a1zj5.png
希望这可以帮助!这个问题帮助了我。
如果您在引用中没有它(就像我没有),您还可以添加 NuGet System.ComponentModel.Annotations 以获取程序集并解决错误。 (在这里添加它,因为这个答案仍然是谷歌的错误)
我也遇到了同样的问题,我通过在我的一个项目中添加引用来解决,该项目没有提到的引用。如果您的解决方案中有 2-3 个项目,请通过将此引用添加到其他项目来进行检查。
我发现我无法在 (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
当我遇到同样的问题时,我搜索了有关此主题的帮助。
尽管以下可能不是 2012 年最初提出的问题的答案,但对于遇到此线程的人来说,它可能是一个解决方案。
解决此问题的一种方法是检查您的项目在解决方案中的位置。事实证明,对于我的实例(我试图安装 NuGet 包但它不会并且出现列出的错误)我的项目文件未包含在解决方案目录中,尽管显示在解决方案资源管理器中。我从超出范围的目录中删除了项目并重新添加了项目,但这次是在正确的位置。
为您的项目使用 4.5 及更高版本的 FrameWork 即可解决问题。因为此命名空间低于 4.5 及更高版本。
System.ComponentModel.DataAnnotations 包含在其自己的程序集中,因此您需要确保已引用它。简单地说:
1)。右键单击解决方案并选择添加。
2)。从列表中选择参考。
3)。搜索“ System.ComponentModel.DataAnnotation ”并勾选其左侧的复选框,然后按确定。
工作完成,不应该有任何参考错误。
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 .
如果您尝试将 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
我从 Silverlight 4 升级到 Silverlight 5,然后我遇到了这个问题。虽然我在我的项目中的“参考”下有对“System.ComponentModel.DataAnnotations”的参考,但它有一个黄色的让步标志,表明无法找到先前引用的程序集。事实证明,“System.ComponentModel.DataAnnotations”引用的属性指示“特定版本 = True”,当我将其更改为“特定版本 = False”时,它解决了这个问题。右键单击“References”下的“System.ComponentModel.DataAnnotations”程序集,然后从上下文菜单中选择“Properties”。检查“特定版本 = False”的属性值。
它一定是引用了升级到 Silverlight 5 后不再可用的旧 Silverlight 4 程序集。
我也有这个问题。当我添加与 System.xml 相同的命名空间时,这是非常愚蠢的。我尝试删除所有引用,但没有解决。我使用“global::System.ComponentModel”,它也可以正常工作。当我删除我的命名空间时,这个问题已经解决。
在 net40 中使用 System.ComponentModel.DataAnnotation 时出现问题,所以我这样做了:
#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。
就我而言,我必须将 DataAnnotations
的引用从 Assembly 引用更改为 Nuget 包。
我有同样的问题,我通过以下方式解决了这个问题。
右键单击页面,选择属性。在构建操作中选择内容。
希望这个解决方案可以帮助你。