无法加载 DLL 'Microsoft.WITDataStore32.dll' (TeamFoundation.WorkItemTracking)。

11

我希望发布这篇文章能够节省其他人寻找这个问题的时间和精力:

我的当前环境是 VS2015 配合 TFS 2013.4

问题

我原来的电脑上安装的是 VS2013,我一直在使用 Microsoft.TeamFoundation.WorkItemTracking.Client 命名空间从 TFS 中获取一些工作项信息。

最近我重新组建了我的电脑,并继续开发一个程序,以获取这些信息。

令我沮丧的是,我一直收到错误:

Unable to load DLL 'Microsoft.WITDataStore32.dll'

5个回答

17

你不再需要安装TFS对象模型/Team Explorer。你可以使用NuGet包

同时,使用NuGet包可能会遇到应用程序找不到本地DLL的问题。

下面的文本来自https://connect.microsoft.com/VisualStudio/feedback/details/1695433/team-foundation-server-2015-sdk-missing-microsoft-witdatastore64-dll

Microsoft.WITDataStore*.dll是ExtendedClient包的一部分,它们是本地dll,不能在托管项目中引用。 您需要手动将dll复制到bin文件夹以进行运行时解析。

Microsoft.WITDataStore32.dll位于..\Microsoft.TeamFoundationServer.ExtendedClient.14.83.1\lib\native\x86 Microsoft.WITDataStore64.dll位于..\Microsoft.TeamFoundationServer.ExtendedClient.14.83.1\lib\native\amd64

(请注意,这些路径指向NuGet包文件夹)


谢谢!我还没有测试过你的解决方案,但是由于使用NuGet比我的建议更方便,所以我会接受它作为答案。 - Riegardt Steyn

3
最终,以下stackoverflow帖子给了我答案: TFS 2010 API DLL Microsoft TeamFoundation Framework Server DLL在哪里 我需要安装什么才能获得Microsoft TeamFoundation WorkItemTracking Client VS2015的DLL与TFS 2013不兼容,所以不要Microsoft Visual Studio 14.0 \ Common7 \ IDE中寻找DLL!
如果你使用TFS 2013,必须安装Team Explorer 2013
它很小(只有130 MB),并且包含正确的DLL。
安装后,您需要在此处Browse...引用。
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ReferenceAssemblies

0

如果您在处理TFS/VSTS(即在Visual Studio 2015中获取项目名称或提取测试用例ID)时遇到Microsoft.WITDataStore32.dll问题,则可以将Team Foundation dll简单地重定向到版本12.0.0.0而不是14.0.0.0,因为14版本dll在检索此类数据时会出现问题,我们会遇到此类错误。

我在从“TFS 2012和VS2013”迁移到“VSTS和VS2015”后运行我的编码UI测试脚本时遇到了“无法加载DLL'Microsoft.WITDataStore32.dll':找不到指定的模块。(来自HRESULT的异常:0x8007007E)”的问题。

当我在应用程序配置文件中将引用的14版本dll重定向到12版本时,问题得到解决,如下所示:

   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

     <dependentAssembly>
       <assemblyIdentity name="Microsoft.TeamFoundation.Common" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
       <bindingRedirect oldVersion="14.0.0.0" newVersion="12.0.0.0"/>
     </dependentAssembly>

     <dependentAssembly>
       <assemblyIdentity name="Microsoft.TeamFoundation.TestManagement.Client" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
       <bindingRedirect oldVersion="14.0.0.0" newVersion="12.0.0.0"/>
     </dependentAssembly>

     <dependentAssembly>
       <assemblyIdentity name="Microsoft.TeamFoundation.WorkItemTracking.Client" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
       <bindingRedirect oldVersion="14.0.0.0" newVersion="12.0.0.0"/>
     </dependentAssembly>

   </assemblyBinding>

敬礼, Prasidh


0

我的情况是我需要直接在测试项目中添加NuGet引用(我的自定义属性位于另一个项目中,且dll未复制到测试项目中)。


0

我发布关于 Visual Studio 2017 的信息以便帮助他人:

请检查以下路径中是否有'Microsoft.WITDataStore32.dll':

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer

如果没有,请尝试安装 vs 2017 的团队资源管理器,从这个博客中下载:

https://blogs.msdn.microsoft.com/bharry/2017/04/05/team-explorer-for-tfs-2017/

然后在团队资源管理器文件夹中找到 Microsoft.WITDataStore32.dll,将其复制到上述路径。

来源:MSDN


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