2014-11-21 71 views
1

我有一个CodedUitest项目,它使用.net Framework 4.0测试一个komplex WPF项目。在Testproject中,我使用AutomationElement.TryGetClickablePoint。你也需要知道,我试图让它在TFS上的TestBuild上运行。两者都是VS2013更新3CodedUiTest参考UiaComWrapper和UIAutomation之间的冲突

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

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

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

我也试过理念更改别名,但它也不会帮忙,因为那样再次说,像“AutomationElement”的类型未知。

有什么办法让它在两种方式下工作吗?或者至少有一种方法可以从解决方案中移除这个UiaComwrapper,因此我可以将参数更改为System.Windows.Point,然后解决问题?

回答

1

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

如果你UiaComWrapper和UiAutomationClient和或UiaAutomationTypes之间的冲突为AutmationElement类,例如,它常常被CodedUITests,你只需要引用UiaComWrapper你参考,如果你得到你的构建服务器上的这个错误你需要检查你的.csproj文件是否有这个引用的条目。如果缺少该条目,请将其从您的引用中删除并再次添加,或者在需要时使用此行。

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

您应该将它添加到其他参考文件中的itemGroup中。

修复之后,重试您的Build或Builddefinition,它应该被修复。 这就是我修复它的方式。