1

我正在尝试在构建解决方案之后运行 MSpec 测试。所以,我的 MSBuild 脚本设置如下:

<?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
      <Target Name="Build">
        <MSBuild Projects="../MyApplication.Web.sln" />
        <Message Text="Building solution" Importance="high" />
      </Target>

      <Target Name="TeamCity" DependsOnTargets="Build">
        <Message Text="Before executing MSpec command" Importance="high" />
        <Exec Command="mspec.exe ..\Hosts\MyApplication.Hosts.Web.Specs\bin\MyApplication.Hosts.Web.Specs.dll --teamcity" />
        <Message Text="Running MSpec" Importance="high" />  
      </Target>
    </Project>

然后我将“TeamCity”称为我在 TeamCity 中的目标。当命令

“mspec.exe ..\Hosts\MyApplication.Hosts.Web.Specs\bin\MyApplication.Hosts.Web.Specs.dll --teamcity”

执行时,我收到以下错误:

C:\TeamCity\buildAgent\work\117e3aa3bb76aad0\Build>mspec ..\Hosts\Application.Hosts.Web.Specs\bin\Application.Hosts.Web.Specs.dll 无法加载文件或程序集 'file:// /C:\TeamCity\buildAgent\work\117e3aa3bb7 6aad0\Hosts\Application.Hosts.Web.Specs\bin\Application.Hosts.Web.Specs.dll' 或其依赖项。试图加载格式不正确的程序。

经过一番调查,我发现本地机器和构建服务器上的“MyApplication.Hosts.Web.Specs.dll”虽然都是 15kb,但具有不同的 md5 校验和。这或许可以解释为什么执行 MSpec 测试会导致错误。事实上,如果我将 dll 从本地机器复制到构建服务器,测试就会运行。

所以我的问题是,其他人是否遇到过同样的问题,即“糟糕”地构建程序集?

-编辑- 在本地,我将解决方案构建为 64 位应用程序,但在 TeamCity 中,我将其构建为 32 位 (x86)。这可能是问题吗?

PS:我尝试在 TeamCity 中将其构建为 64 位应用程序,但我遇到了其他我宁愿暂时忽略的错误。但是,为了完整起见,这里是:

Client\ProdMaster.SLCharts\ProdMaster.SLCharts.csproj
[15:11:22]: [Client\ProdMaster.SLCharts\ProdMaster.SLCharts.csproj] GetFrameworkPaths
[15:11:22]: [GetFrameworkPaths] ValidateSilverlightFrameworkPaths
[15:11:22]: [ValidateSilverlightFrameworkPaths] C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.Common.targets(104, 9): The Silverlight 4 SDK is not installed.
4

1 回答 1

2

大卫,

  • 您正在运行哪个版本的 MSpec?如果您仍在使用 0.3.0.0,我鼓励您切换到最新的 0.4.9.0 版本。此版本包含 mspec.exe (AnyCPU) 以及 mspec-x86.exe (x86)。您应该使用与您的构建环境/架构匹配的可执行文件。

  • 您能否使用 Fusion Log Viewer 跟踪程序集绑定 - 它是 Windows SDK 的一部分。错误消息“试图加载格式不正确的程序。” 表示 MSpec 能够找到规范 DLL,但目标体系结构在 MSpec 可执行文件和规范程序集之间不匹配。

于 2011-04-07T17:19:49.377 回答