我可以在另一台PC上使用msbuild构建CodedUI测试解决方案吗?

时间:2017-02-20 18:47:04

标签: visual-studio-2015 msbuild coded-ui-tests

我有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(仅包含在企业版中)的解决方案?

2 个答案:

答案 0 :(得分:1)

我们也有这个问题。这非常common

安装VS Enterprise时,您还要将CodedUI .dll安装到全局程序集缓存中。这是允许UI测试运行的原因。您的开发机器上的项目引用了这些项目。

如果你试图在别处运行它们,它们会搜索这些.dll而不是找到它们。

您有两种选择:

  1. 下为要构建测试的计算机的企业许可证花费〜$ 3k
  2. 创建一个包含必要的codedUI .dll的nuget包(或等效的解决方案)。更新您的项目以引用此包而不是GAC(请注意,这非常困难)。在构建到没有企业的计算机时,确保将软件包与解决方案一起部署。
  3. 您也可以使用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

这为我修复了这些错误,我们的构建服务器构建项目就好了。