WCF数据服务,WindowsAzure.Storage和Microsoft.Data.OData版本的噩梦

时间:2015-06-10 20:00:05

标签: visual-studio wcf odata azure-storage dll-reference

我正在使用Visual Studio 2015(Pre),Framework 4.5.2

我有以下项目结构

StorageProject

  • nuget包安装了Microsoft.WidowsAzure.Storage
  • 此Nuget包具有(其中包括)Microsoft.Data.OData的依赖项,也已安装

AnotherProject

  • 参与StorageProject
  • 没有任何nuget包或其他引用(框架上的默认引用除外)

以下是 StorageProject

中安装的软件包列表
  • WindowsAzure.Storage 4.3.0
  • Microsoft.WindowsAzure.ConfigurationManager 3.1.0
  • System.Spatial 4.3.0
  • Microsoft.Data.Edm 5.6.4
  • Microsoft.Data.OData 5.6.4
  • Microsoft.Data.Services.Client 5.6.4

这些都是WindowsAzure.Storage的最新版本的依赖项。

解决方案的任何位置都没有安装其他版本的软件包。

我会关注Microsoft.Data.OData,但Microsoft.Data.EdmMicrosoft.Data.Services.Client 5.6.4

会出现同样的问题

构建 StorageProject 时,这些dll(5.6.4)的正确版本最终会出现在项目的bin文件夹中。

但是在构建 AnotherProject 时,bin文件夹包含版本5.6。 2 的dll。

现在我整天都在试图找出这些dll来自哪里。

GAC中有一个版本5.0.0.0,我无法卸载。 (gacutil产生它被某种东西使用)。

我在C:\上进行了文件搜索,发现这个版本的dll所在的唯一位置(在我项目的bin文件夹旁边)位于C:\Program Files (x86)\Microsoft WCF Data Services\5.6.2。如果我删除(移动)此文件夹,我的项目将构建"通常"一切都很好。实际上,在这种情况下,OData在的bin文件夹中 。就我而言,这样就可以了。

现在真正的问题:

  • 为什么来自Microsoft WCF Data Services的版本最终出现在bin中,而不是引用项目中实际安装的版本?

  • Microsoft WCF Data Services来自哪里?我根本不记得安装它,也许它在Visual Studio上有一个版本? (我已安装2012年,2013年和2015年)

  • 我可以卸载吗?我在Windows'中看不到它。控制面板。

1 个答案:

答案 0 :(得分:1)

•为什么Microsoft WCF数据服务中的版本最终出现在bin中,而不是引用项目中实际安装的版本?

  
    

这可能是由于存储客户端不依赖于特定版本的数据服务客户端。由于特定版本设置为false,因此在编译期间将首先搜索GAC,任何版本都将被视为“可接受”,并且不会导出其他版本。

  

•Microsoft WCF数据服务来自哪里?我根本不记得安装它,也许它在Visual Studio上有一个版本? (我已安装2012年,2013年和2015年)

  
    

由于各种原因,可以安装它。 Azure SDK也包含此功能。因此,如果您曾经安装过Azure SDK,那么可能就是这样。

  

•我可以卸载吗?我在Windows的控制面板中没有看到它。

  
    

看起来这只能通过卸载通过“添加/删除程序”安装程序集的MSI程序包来实现。为此,你必须再次弄清楚哪个装置带来了这个装配,并检查是否需要它。