Failed to add reference to 'Microsoft.WITDataStore' 如何解决?

How to solve Failed to add reference to 'Microsoft.WITDataStore'?

我有一个空的 Class library 项目,想安装以下 NuGet 作为依赖项:

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

安装失败并出现错误:

Failed to add reference to 'Microsoft.WITDataStore'.

其他 nugets,例如Entity FrameworkMicrosoft.TeamFoundation.Client 我能够安装。

我的配置

谢谢。

看来这是the NuGet package的配置错误。

Microsoft.WITDataStore.dll是一个非托管库,不能被.NET项目直接引用,这就是包安装失败的原因。

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

我已使用 NuGet 的 "Contact Owner" 功能尝试通知 Microsoft 的发布者程序包配置错误,但由于它是由 "nuget-bot" 发布的,我不知道这是否会成功任何事物。如果更新包以解决问题,我将更新此答案。 我目前使用的解决方法是:

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

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

这会导致 NuGet 记录正在安装的包、正在引用的 DataStoreLoader.dll 以及在您构建时将 WITDataStore.dll 复制到您的 bin\ 文件夹中,因此它可以被包装库使用。

请使用官方 NuGet 包。我写这篇 blog post 作为指南。我仍然希望 non-official 包被拿下。

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

packages\Microsoft.TeamFoundation.11.0.0.0\lib\net20

希望对您有所帮助