C# 架构上的System.ComponentModel.DataAnnotations版本参考问题

C# 架构上的System.ComponentModel.DataAnnotations版本参考问题,c#,entity-framework,silverlight,C#,Entity Framework,Silverlight,我正在使用一个应用程序,该应用程序使用System.CodeDom.Compiler生成Silverlight客户端DLL,用于引用实体框架实体。我的机器在编译过程中产生错误。找不到System.ComponentModel.DataAnnotations.Schema。这不是用于构造的.net v4。我的机器我们升级到Silverlight 5,发现与Silverlight 5不兼容,不得不返回Silverlight 4。从未尝试升级到Silverlight 5的其他计算机不会出现此问题。当需

我正在使用一个应用程序,该应用程序使用System.CodeDom.Compiler生成Silverlight客户端DLL,用于引用实体框架实体。我的机器在编译过程中产生错误。找不到System.ComponentModel.DataAnnotations.Schema。这不是用于构造的.net v4。我的机器我们升级到Silverlight 5,发现与Silverlight 5不兼容,不得不返回Silverlight 4。从未尝试升级到Silverlight 5的其他计算机不会出现此问题。当需要某些DataAnnotation时,代码明确地包括对System.ComponentModel.DataAnnotations的引用。我无法将此依赖项删除到System.ComponentModel.DataAnnotations命名空间的版本,该命名空间似乎比我的计算机应有的更高级。我不能在版本上继续前进,因为我必须与将工作结果分发给客户的自动构建过程保持兼容。如果我将参考systax更改为适用于我,它将无法适用于其他所有人。我需要关于如何确定其来源的想法,以便消除它。我的项目中的引用显示了正确的版本,但由于此编译是在我的解决方案之外动态完成的,因此我不知道如何验证稍后完成的应用程序生成的编译中使用的版本。我在错误发生时捕获了它,但这并没有帮助,因为它在编译时提供了一个按名称列出的引用列表,我不知道它如何解析为特定的dll以在当时使用,而且它似乎没有找到我认为它应该或不会引用.schema命名空间的dll。在这个引用中有一个我没有把握的东西是强制的。我想这意味着我的机器上有一些东西使用了比v4.3更晚的实体框架引用,但我想我的机器只有v4

我对这个问题做了很多一般性的搜索,找到了很多关于这个特定错误的引用,其中一些在这个网站上,这表明我需要查找DLL版本的问题,但我不确定编译从何处提取dll,并且我检查的dll似乎是命名空间System.ComponentModel.DataAnnotations的正确版本,因此我认为我的问题一定是从其他方面发现的

有2个不是特定的Silverlight 4程序集列为编译器的输入。我的两个源文件没有引起引用,因此我认为if必须来自其中一个

…\bin\RIAServices\v1.0\Libraries\Silverlight\System.ServiceModel.DomainServices.Client.dll …\bin\RIAServices\v1.0\Libraries\Silverlight\System.ServiceModel.DomainServices.Client.Web.dll

实际产生的错误是:

命名空间中不存在类型或命名空间名称“Schema” “System.ComponentModel.DataAnnotations”(是否缺少程序集 参考?)的附加阶段:错误CS0234

大多数发布的解决方案都涉及到升级到更高版本的Dot Net和/或Entity Framework,我无法使用这些解决方案

我不是实体框架或RIA服务方面的专家,可能忽略了一些基本的东西