【发布时间】:2017-03-15 23:45:53
【问题描述】:
我最近使用 Entity Framework 4 进行了一个旧的 WCF 项目,并将其升级到 EF6 和 .NET 4.0。我采用了旧版 Silverlight 客户端项目并进行了升级。当我向升级的 WCF 服务添加新服务引用时,问题开始出现。服务引用中生成的代码有冲突,无法编译。
我最初的问题是 Microsoft.Data.Services.Client 和 System.Data.Services.Client 都是引用的一部分……
CS0433 'EntitySetAttribute' 类型存在于两者中 'Microsoft.Data.Services.Client,版本=5.6.4.0,文化=中性, PublicKeyToken=31bf3856ad364e35' 和 'System.Data.Services.Client, 版本=5.0.5.0,文化=中性,PublicKeyToken=31bf3856ad364e35'
当我查看生成的失败代码 References.cs 时,这让我更加惊讶。用法完全合格。
[global::System.Data.Services.Common.EntitySetAttribute("myTable")]。显然这两个程序集使用完全相同的命名空间。
如果我删除 Microsoft.Data.Services.Client 我会得到:
错误 CS1061 'myEntities4' 不包含 'DefaultResolveType' 并且没有扩展方法 'DefaultResolveType' 可以找到接受“myEntities”类型的第一个参数(是 您缺少 using 指令或程序集引用?)
如果我删除 System.Data.Services.Client 我会得到:
无法加载文件或程序集'System.Data.Services.Client, 版本=5.0.5.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或 它的依赖项之一。系统找不到指定的文件。
在使用 RadDataServiceDataSource.DataServiceContext 的 UserControl 的 XAML 中发现此错误。
我花了好几个小时尝试了几种不同的路径,包括:
- 从 NuGet 获取旧版本的 Microsoft.Data.Services.Client。
- 如上所述,仅使用其中一个参考文献。
- 在客户端中添加服务引用之前更改 WCF 服务中的引用。
- 在添加服务参考时尝试高级选项
- 重用程序集中的所有类型。
- 在指定的引用程序集中重用类型。
我已阅读以下帖子,但它们没有帮助:
Microsoft.Data.Services.Client.dll vs System.Data.Services.Client.dll
Project does not build after updating a service reference
我现在正在考虑构建一个新的 WCF 和 Web 项目来解决这些问题。这也应该是一项漫长的工作,希望不是红鲱鱼。
这是从旧版 Silverlight、WCF、Entity Framework 或 .NET 升级的产物吗?如果你知道这是什么,或者你以前看过这个,请帮助我。不幸的是,将项目完全重写到另一个平台不是一种选择。
【问题讨论】:
-
我不知道具体答案,但请尝试查看 fuslogvw.exe 和程序集绑定重定向。
标签: c# .net wcf silverlight