0

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

我有以下项目结构

存储项目

  • 安装了 nuget 包 Microsoft.WidowsAzure.Storage
  • 这个 Nuget 包(除其他外)依赖于 Microsoft.Data.OData,它也已安装

另一个项目

  • 参考了 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.EdmandMicrosoft.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. 如果我删除(移动)这个文件夹,我的项目会“正常”构建,一切都很好。实际上,在这种情况下 OD​​ata 根本不在bin 文件夹。就我而言,这样就可以了。

现在真正的问题:

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

  • 从哪里来Microsoft WCF Data Services?我根本不记得安装它,也许它带有 Visual Studio 上的一个版本?(我安装了 2012、2013 和 2015)

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

4

1 回答 1

1

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

这可能是因为存储客户端不依赖于特定版本的数据服务客户端。由于Specific Version设置为false,编译时会先搜索GAC,任何版本都会被认为“可接受”,不会导出其他版本。

•Microsoft WCF 数据服务从何而来?我根本不记得安装它,也许它带有 Visual Studio 上的一个版本?(我安装了 2012、2013 和 2015)

由于各种原因,它可能会被安装。Azure SDK 也包含此内容。因此,如果您曾经安装过 Azure SDK,它可能会附带它。

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

看起来这只能通过卸载通过添加/删除程序安装程序集的 MSI 包来实现。为此,您必须再次确定哪个安装带来了该组件,并检查是否需要。

于 2015-06-22T22:28:06.883 回答