【发布时间】:2013-12-18 01:11:13
【问题描述】:
我正在构建一个连接到 TFS 的 ASP.NET MVC 应用程序。该应用程序显示带有测试计划、套件和测试用例的树。
当应用程序在 Visual Studio 2012 Update 3 中运行时,连接到我的开发计算机上安装的 TFS 实例或连接到 Visual Studio Online 时一切正常。当我在本地 IIS 上部署 ASP MVC 应用程序时,它在连接到本地 TFS 时仍然有效。但是,当连接到 Visual Studio Online 时,TFS API 给了我错误“错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回。”当我获取测试计划下的条目时,访问 ITestPlan.RootSuite.Entries 时。
可能是什么问题或解决方案?
更多信息:
我引用了以下程序集,所有版本均为 11.0.0.0
- Microsoft.TeamFoundation.Build.Common.dll
- Microsoft.TeamFoundation.Client.dll
- Microsoft.TeamFoundation.Common.dll
- Microsoft.TeamFoundation.dll
- Microsoft.TeamFoundation.TestManagement.Client.dll
- Microsoft.TeamFoundation.TestManagement.Common.dll
- Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll
- Microsoft.TeamFoundation.WorkItemTracking.Client.dll
在 Visual Studio 中运行时,ASP MVC 应用程序在 IISExpress 中运行并加载以下程序集(根据输出窗口):
GAC_MSIL
- Microsoft.TeamFoundation.Client.dll
- Microsoft.TeamFoundation.Common.dll
- Microsoft.TeamFoundation.dll
- Microsoft.TeamFoundation.TestManagement.Client.dll
- Microsoft.TeamFoundation.TestManagement.Common.dll
- Microsoft.TeamFoundation.WorkItemTracking.Client.dll
- Microsoft.TeamFoundation.WorkItemTracking.Common.dll
- Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.dll
- Microsoft.TeamFoundation.WorkItemTracking.Proxy.dll
GAC_32
- Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll
在 IIS 中运行时,会加载以下程序集(根据进程监视器):
C:\WINDOWS\assembly\NativeImages_v4.0.30319_32\
- Microsoft.TeamFoundation.Client.ni.dll
- Microsoft.TeamFoundation.Common.ni.dll
- Microsoft.TeamFoundation.Diff.ni.dll
- Microsoft.TeamFoundation.TestManagement.Client.ni.dll
- Microsoft.TeamFoundation.TestManagement.Common.ni.dll
- Microsoft.TeamFoundation.VersionControl.Client.ni.dll
- Microsoft.TeamFoundation.VersionControl.Common.Integration.ni.dll
- Microsoft.TeamFoundation.VersionControl.Common.ni.dll
- Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.ni.dll
- Microsoft.TeamFoundation.WorkItemTracking.Client.ni.dll
- Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.ni.dll
- Microsoft.TeamFoundation.WorkItemTracking.Common.ni.dll
C:\WINDOWS\程序集\GAC_32\
- Microsoft.WITDataStore.dll
不同之处在于 IISExpress 加载 MSIL 版本的程序集,而 IIS 加载本机映像。并且 IIS 加载 VersionControl 程序集和 Microsoft.TeamFoundation.WorkItemTracking.Proxy.dll,以及 Microsoft.TeamFoundation.Diff.ni.dll 而不是 Microsoft.TeamFoundation.dll。这对我来说似乎很奇怪,我无法解释。
在 IIS 中运行与本地 TFS 或 TFS Online 通信时,会加载相同的程序集。我可以从中得出的唯一结论是从服务器返回的数据是不同的。但这个结论与 IISExpress 中的 Web 应用程序可以处理 TFS Online 数据这一事实相矛盾。
【问题讨论】:
-
第一次 TFS 调用失败还是后续调用失败?
-
我检查 ITestPlan.RootSuite 或 ITestPlan.RootSuite.Entries 是否为空,但显然在检查这个或在 ITestPlan.RootSuite.Entries 上执行 foreach 循环时,某些东西会发出无效调用并抛出此异常。
-
我试图找出它是否在第一次 TFS 调用时失败。如果它在第一次调用时失败,那么它是 all TFS 调用的问题。
-
我想误解了你。我设法登录并获取项目中的所有测试计划。所以获取测试计划下的条目并不是第一次调用 TFS。