我正在使用一个使用System.CodeDom.Compiler生成Silverlight客户端DLL的应用程序,以便在引用实体框架实体时使用。我的机器在编译过程中会产生错误。它没有找到System.ComponentModel.DataAnnotations.Schema。这不是构造的.net v4。我的机器已升级到Silverlight 5并发现与Silverlight 5不兼容并且必须返回到Silverlight 4.其他从未尝试升级到Silverlight 5的机器不会出现此问题。代码explicitley包括在需要某些数据注释时对System.ComponentModel.DataAnnotations的引用。我无法将此依赖项删除到System.ComponentModel.DataAnnotations命名空间的版本,该版本似乎比我的机器应该具有的更高级。我无法继续推进版本,因为我必须与自动构建过程保持一致,将我的工作成果分发给客户。如果我更改参考systax以便为我工作,那么其他所有人都会失败。我需要有关如何确定其来源的想法,以便我可以消除它。我的项目中的引用显示正确的版本,但由于这个编译是在我的解决方案之外动态完成的,我不知道如何验证应用程序生成的编译后使用的版本。我在错误发生的时候陷入了错误,但这没有用,因为它在编译时按名称提供了引用列表,我不知道它如何解析为当时使用的特定dll,以及它似乎没有找到我认为应该的那个,或者它不会引用.schema命名空间。我没有处理的东西就是强迫这个参考。我认为这意味着我的机器上有一些东西使用的实体框架参考比v4.3晚,但我认为我的机器只有v4。我正在寻找关于如何跟踪它的想法。
我已经针对这个问题做了很多通用搜索,找到了很多对这个特定错误的引用,其中一些是在这个网站上,这表明我需要寻找DLL版本的问题,但我不是确定编译从哪里拉出dll和我检查的那些似乎是命名空间System.ComponentModel.DataAnnotations的正确版本所以我认为我的问题必须从其他东西中获取。
有2个未特别指定的Silverlight 4程序集作为编译器的输入。我的两个源文件没有引起引用,所以我想如果必须来自其中一个。
... \ BIN \ RIAServices \ 1.0 \图书馆\ Silverlight的\ System.ServiceModel.DomainServices.Client.dll ... \ BIN \ RIAServices \ V1.0 \库\ Silverlight的\ System.ServiceModel.DomainServices.Client.Web.dll
产生的实际错误是:
命名空间中不存在类型或命名空间名称“Schema” 'System.ComponentModel.DataAnnotations'(你错过了一个程序集吗? 参考?)附加标签:错误CS0234。
大多数发布的解决方案都涉及升级到更高版本的Dot Net和/或实体框架,但我无法使用这些解决方案。
我不是实体框架或RIA服务的专家,可能会忽略一些基本的东西。