如何解决无法添加对'Microsoft.WITDataStore'的引用?

时间:2015-12-07 13:46:28

标签: .net visual-studio nuget

我得到了空的Class library项目,并希望将以下NuGet安装为依赖项:

nuget-bot.Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.12.0.31101

安装失败,错误:

  

无法添加对“Microsoft.WITDataStore”的引用。

其他注意事项,例如Entity FrameworkMicrosoft.TeamFoundation.Client我能够安装。

我的配置

  • Windows 7企业版
  • Visual Studio Enterprise 2015
  • Visual Studio 2015的NuGet包管理器

感谢。

3 个答案:

答案 0 :(得分:7)

the NuGet package的配置似乎是错误的。

Microsoft.WITDataStore.dll是一个非托管库,无法由.NET项目直接引用,这就是软件包安装失败的原因。

Microsoft.TeamFoundation.WorkItemTrackingClient.DataStoreLoader.dll是一个.NET包装器库,允许访问Microsoft.WITDataStore.dll中的非托管代码。 应该发生的是包应该添加.NET库(DataStoreLoader.dll)作为程序集引用,并添加非托管库(WITDataStore.dll)作为配置的内容项要在构建时复制到bin\目录。相反,它试图将它们作为程序集引用添加,它们会失败并被NuGet回滚。

我使用过NuGet"联系所有者"尝试通知Microsoft的发布者该软件包的错误配置,但由于它已经由" nuget-bot"发布,我不知道这是否会完成任何东西。如果更新软件包以解决问题,我将更新此答案。 我目前使用的解决方法是:

  1. manually download包,解压缩,然后将解压缩的文件夹复制到我的解决方案的packages\目录中。
  2. 将项目中的引用添加到解压缩包中的Microsoft.TeamFoundation.WorkItemTrackingClient.DataStoreLoader.dll副本。
  3. 将文件WITDataStore.dll作为现有文件添加到我的项目中,并将其标记为"始终复制"在"属性"。 ("复制如果更新"也可以正常工作)

  4. 将行<package id="nuget-bot.Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader" version="12.0.31101" targetFramework="net452" />添加到我项目的packages.config文件中。

  5. 这导致NuGet记录了正在安装的软件包,DataStoreLoader.dll被引用,并且WITDataStore.dll在您构建时被复制到bin\文件夹中,因此它可以是由包装库使用。

答案 1 :(得分:0)

请使用NuGet官方套餐。我已将此blog post作为指南。我仍然希望取消非官方套餐。

答案 2 :(得分:0)

我已经解决了这个错误,只需将 Microsoft.WITDataStore.dll 复制到Microsoft Team Foundation packages文件夹即可。您可以在手动下载此软件包后复制此dll。

packages\Microsoft.TeamFoundation.11.0.0.0\lib\net20

希望这有助于你