如何解决“Failed to add reference to 'Microsoft.WITDataStore'”问题?

9
我有一个空的“类库”项目,并想将以下NuGet安装为依赖项:nuget-bot.Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.12.0.31101。但是安装失败并出现以下错误信息:
无法添加对'Microsoft.WITDataStore'的引用。
我能够安装其他NuGet,例如Entity FrameworkMicrosoft.TeamFoundation.Client。我的配置如下:
  • Windows 7企业版
  • Visual Studio Enterprise 2015
  • NuGet包管理器 for Visual Studio 2015
谢谢。

1
我在今年夏天向微软提出了类似的问题。 - Sam Sussman
3个回答

10

看起来这是NuGet包配置错误。

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. 手动下载包,解压缩它,然后将解压缩的文件夹复制到我的解决方案的packages\目录中。
  2. 在我的项目中添加对未压缩软件包中的Microsoft.TeamFoundation.WorkItemTrackingClient.DataStoreLoader.dll的引用。
  3. 将文件WITDataStore.dll作为现有文件添加到我的项目中,并在“属性”下将其标记为“始终复制”。(“仅复制较新的文件”也可以正常工作)

  • 将以下内容添加到我的项目的packages.config文件中:<package id="nuget-bot.Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader" version="12.0.31101" targetFramework="net452" />

  • 这样做会使 NuGet 记录已安装的包,引用了 DataStoreLoader.dll 并在每次构建时将 WITDataStore.dll 复制到您的 bin\ 文件夹中,以便包装库可以使用它。


    1
    1 a. 从 https://www.nuget.org/api/v2/package/nuget-bot.Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader/12.0.31101 手动下载文件后,请确保将文件扩展名 nuget-bot.microsoft.teamfoundation.workitemtracking.client.datastoreloader.12.0.31101.nupkg 更改为 nuget-bot.microsoft.teamfoundation.workitemtracking.client.datastoreloader.12.0.31101.nupkg.rar。然后,您可以使用任何文件压缩软件来提取已下载文件的内容。我在我的案例中使用了WinRar。 - Iragi KNJ

    0
    请使用官方的 NuGet 包。我已经写了这篇 博客文章 作为指南。我仍然希望能够撤下非官方的包。

    有没有想法知道这个神秘的NuGet机器人是谁?我还没有弄清楚。 - Tim Abell

    0

    我通过将 Microsoft.WITDataStore.dll 简单地复制到 Microsoft Team Foundation 包文件夹中来解决了这个错误。您可以在手动下载此包后复制此 dll。

    packages\Microsoft.TeamFoundation.11.0.0.0\lib\net20
    

    希望这能对你有所帮助。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接