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 Framework
或 Microsoft.TeamFoundation.Client
我能够安装。
我的配置
- Windows 7 家企业
- Visual Studio 企业 2015
- Visual Studio 2015
的 NuGet 包管理器
谢谢。
看来这是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" 发布的,我不知道这是否会成功任何事物。如果更新包以解决问题,我将更新此答案。
我目前使用的解决方法是:
- manually download 压缩包,解压缩,然后将解压缩的文件夹复制到我的解决方案的
packages\
目录中。
- 在我的项目中添加对解压包中
Microsoft.TeamFoundation.WorkItemTrackingClient.DataStoreLoader.dll
副本的引用。
将文件 WITDataStore.dll
作为现有文件添加到我的项目中,并在 "Properties" 下将其标记为 "Copy Always"。 ("Copy if newer" 也可以正常工作)
将行 <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
希望对您有所帮助
我有一个空的 Class library
项目,想安装以下 NuGet 作为依赖项:
nuget-bot.Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.12.0.31101
安装失败并出现错误:
Failed to add reference to 'Microsoft.WITDataStore'.
其他 nugets,例如Entity Framework
或 Microsoft.TeamFoundation.Client
我能够安装。
我的配置
- Windows 7 家企业
- Visual Studio 企业 2015
- Visual Studio 2015 的 NuGet 包管理器
谢谢。
看来这是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" 发布的,我不知道这是否会成功任何事物。如果更新包以解决问题,我将更新此答案。 我目前使用的解决方法是:
- manually download 压缩包,解压缩,然后将解压缩的文件夹复制到我的解决方案的
packages\
目录中。 - 在我的项目中添加对解压包中
Microsoft.TeamFoundation.WorkItemTrackingClient.DataStoreLoader.dll
副本的引用。 将文件
WITDataStore.dll
作为现有文件添加到我的项目中,并在 "Properties" 下将其标记为 "Copy Always"。 ("Copy if newer" 也可以正常工作)将行
<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
希望对您有所帮助