UiaComWrapper和UIAutomation之间的CodedUiTest参考冲突

时间:2014-11-21 14:09:24

标签: c# .net tfs reference coded-ui-tests

我有一个CodedUitest项目,它使用.net Framework 4.0测试komplex WPF项目。在Testproject中,我使用AutomationElement.TryGetClickablePoint。你也需要知道,我试图让它在TFS上的TestBuild上运行。两者都是VS2013 Update 3

这就是问题开始的地方。我在UiaComWrapper和UIAutomationClient以及UIAutomationTypes之间存在冲突。在UiaComWrapper中,似乎AutomationElement.TryGetClickablePoint想要一个System.Drawing.Point作为参数,并且在UIAutomation中......它想要一个System.Windows.Point作为参数。

我尝试了一些我在互联网上发现的解决方案也是从这里开始的,但也有一些自己的想法,但是它在本地运行但不在TFS上,因为它表示AutomationElement将存在于两者中(ComWrapper和UIAutomation)或没有引用UIAutomation它无法在服务器上找到类似“AutomationElement”的类型。

另一方面,如果我添加UiAutomation,它不会运行本地

我也试过改变Alias的想法,但它也没有帮助,因为它再次说明像“AutomationElement”这样的类型是未知的。

有没有办法让它以两种方式运作?或者至少从解决方案中删除这个UiaComwrapper的方法,因为我可以将参数更改为System.Windows.Point,从而摆脱问题?

1 个答案:

答案 0 :(得分:1)

我自己解决了。以下是它的全部内容。 AutomationElement.TryGetClickablePoint标头之间的冲突是因为AutomationElement在两个Assemblies中定义。

如果UiaComWrapper与UiAutomationClient和UiaAutomationTypes之间存在冲突(例如,通常由CodedUITests使用的AutmationElement类),您只需在引用中引用UiaComWrapper,如果在构建服务器上出现此错误,则需要检查.csproj文件是否有此引用的条目。如果缺少此条目,请将其从引用中删除并再次添加或根据需要使用此行。

<Reference Include="UIAComWrapper, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

您应该将其添加到itemGroup中,其他引用位于File中。

在此修复之后重试您的Build或Builddefinition并且应该修复它。 这就是我修复它的方式。