【发布时间】:2011-04-07 08:21:33
【问题描述】:
我正在尝试在构建解决方案之后运行 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.Hos ts.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' 或 on e 的依赖项。试图用不正确的 f 加载程序 格式。
经过一番调查,我发现本地机器和构建服务器上的“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.
【问题讨论】:
-
您有机会发布确切的错误信息吗?
-
@Sergi - 感谢您的帮助!我已经编辑了 OP 并包含了错误消息的详细信息。
-
@Sergi - Alexander 为我提供了答案。这是一个相当艰难的过程,但最终到达了那里:)
-
很高兴听到您正在缓慢但肯定地摆脱所有 MSpec/TeamCity 问题 :)
-
@Sergi - 是的,慢慢地是正确的词。 :)。我确信还会有其他问题,但希望不会。