我有VS2015 Enterprice版本(这是编译CodedUI项目所必需的 - 如果我错了,请纠正我。)
项目有一些CodedUI单元测试。
1)我可以在VS2015的Dev PC上构建解决方案 - 没问题。 2)我可以使用msbulid.exe solution.sln在我的Dev pc上构建解决方案 - 没问题。 3)我有另一台PC(测试电脑),其中有 NO Visual Studio,只安装了Build Tools和.Net框架。当我尝试使用msbuild.exe构建解决方案时 - 存在与测试工具相关的错误:
Assertion\Assert_WPF.cs(6,40): error CS0234: The type or namespace name 'UITesting' does not exist in the namespace 'Microsoft.VisualStudio.TestTools' (are you missing an assembly reference?)
我的问题:是否有可能在没有安装VS的测试机器上构建包含CodedUI(仅包含在企业版中)的解决方案?
答案 0 :(得分:1)
我们也有这个问题。这非常common。
安装VS Enterprise时,您还要将CodedUI .dll安装到全局程序集缓存中。这是允许UI测试运行的原因。您的开发机器上的项目引用了这些项目。
如果你试图在别处运行它们,它们会搜索这些.dll而不是找到它们。
您有两种选择:
您也可以使用Gacutil将编码的.dll镜头扫描到您的其他机器的GAC中,但我不建议这样做。
答案 1 :(得分:0)
很抱歉在这么老的问题上发帖,但昨天我遇到了同样的问题。
Ryanmans的回答可能是正确的,但我找到了另一个解决方法。如果您查看相关的.csproj文件,您会发现类似的内容:
<Choose>
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
</ItemGroup>
</When>
</Choose>
正如您所看到的,只有在使用特定的Visual Studio版本时才会使用引用。现在,如果您使用msbuild,您将看到您所做的错误。因为实际上缺少参考文献。 解决方法是为有问题的项目分配一个符号进行条件编译。 (右键单击 - &gt;属性)。 您可以使用该符号作为msbuild命令中的参数,如下所示:
/p:DefineConstants="YourSymbolName" /t:Rebuild
这为我修复了这些错误,我们的构建服务器构建项目就好了。