好的......严重的问题。
我做了the update,认为我可以继续使用CTP2版本的Microsoft.Data.Services.Client来连接库,直到他们更新了Silverlight位。不行。好的,我可以忍受。
我将服务回滚到重新编译的CTP2库(Microsoft.Data.Services + Microsoft.Data.Services.Client),然后在silverlight中更新服务引用。
此时,服务和SL3客户端都使用CTP2位。应该没事吧?错误。非常非常错误。
System.Data.Services.Client.DataServiceCollection'不包含带有'2'参数的构造函数
这是一个严重的显示停止,并没有提到此更新会破坏CTP2功能。老实说,关于SL dll的警告不够:)
有关如何解决此问题的任何想法?我应该尝试卸载更新,还是可以在某个配置文件中指定旧库?
帮助! :)
肯
答案 0 :(得分:1)
首先问题是你的某个项目正在拾取错误的程序集,它可能是服务,但很可能是客户端应用程序。
CTP 2 v1.5中DataServiceCollection的可用构造函数是:
private DataServiceCollection();
internal DataServiceCollection(IEnumerable<T> items);
protected DataServiceCollection(DataServiceContext context, string entitySetName, IEnumerable<T> items, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
internal DataServiceCollection(DataServiceContext context, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback, IEnumerable<T> items);
RTM版本(您安装的更新)KB976126中提供的构造函数是:
public DataServiceCollection();
public DataServiceCollection(IEnumerable<T> items);
public DataServiceCollection(DataServiceContext context);
public DataServiceCollection(IEnumerable<T> items, TrackingMode trackingMode);
public DataServiceCollection(DataServiceContext context, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
public DataServiceCollection(IEnumerable<T> items, TrackingMode trackingMode, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
public DataServiceCollection(DataServiceContext context, IEnumerable<T> items, TrackingMode trackingMode, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
internal DataServiceCollection(object atomMaterializer, DataServiceContext context, IEnumerable<T> items, TrackingMode trackingMode, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
我建议您是否要使用CTP dll,检查客户端应用程序上的引用以及使用System.Data.Services.Client.dll并更改为Microsoft.Data.Services的任何其他应用程序。 Client.dll(位于ADO.NET Data Services V1.5 CTP2文件夹中的程序文件中)。
我也安装了最新版本,目前正在我的PC上运行这两个版本,它正在运行。
另一个重要的事情是检查全局程序集缓存,因为两个版本都将安装在那里(CTP 2 ddls的版本号为99.0.0.0)。
我所做的是为CTP dll添加了ctp文件夹中的引用而不是全局程序集缓存。
此致
Daniel Portella
更新:Soulhuntre它必须是Web服务引用正在使用的EntityClassGenerator,服务引用必须使用GAC system.data.services.client dll来生成类而不是旧的CTP的。 你可以做两件事,一件事是做我上面说的,另一件是删除应该还原所做更改的更新(卸载KB)。您甚至可以尝试删除旧的服务引用并再次创建它,同时确保它使用CTP dll来生成类。
它适用于我的解决方案,因为我已经编写了我自己的DataServiceClientGenerator实现,做了MS提供的那些不会做的神奇的事情,这必须是为什么我可以运行两个安装没有问题。
更新结束。