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.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'またはその依存関係のe。間違った形式でプログラムをロードしようとしました。

調査を行った結果、ローカルマシンとビルドサーバーの「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)が含まれています。ビルド環境/アーキテクチャに一致する実行可能ファイルを使用する必要があります。

  • FustionLogViewerを使用してアセンブリバインディングをトレースしてください。これはWindowsSDKの一部です。エラーメッセージ「誤った形式のプログラムを読み込もうとしました。」MSpecがスペックDLLを検出できるが、ターゲットアーキテクチャがMSpec実行可能ファイルとスペックアセンブリの間で一致しないことを示します。

于 2011-04-07T17:19:49.377 に答える