2010-12-14 13 views
1

私はVS2010(最近移動したフォームVS2008)で開発している.NET 3.5 Webサイトプロジェクトを持っていて、MSBuildとTeamCityでビルド/デプロイしています。私はMsbuildツールバージョン3.5を使用しています。 Webサイトプロジェクトは、Interop-dllを介していくつかのCOMコンポーネントと通信します。私が理解しているように、これらの相互運用機能は、Visual StudioによってCOMコンポーネントのラッパーとして生成されます。 「Interop.cvvToolkitLib」AnyCpuのWebサイトを構築する

は、ファイルまたはアセンブリ をロードできませんでしたか、その 依存関係の1つ:私の問題は、アプリケーションが構築され、Microsoft.WebDeployments.targetsを使用して展開されたとき、私は言って、ランタイムエラーメッセージが出ていることです。 不正なプログラムを読み込もうとしました。 形式です。

私は同様の問題のためのグーグルで、「AnyCpu」のビルドでは、interopを生成しているツールがx86にデフォルト設定されているため、この問題を修正する必要があるとの記事が多数見つかりました。

だから、私はビルドスクリプトを開き、AnyCpuとしてのプラットフォームを指定しようとしました:

<Platform>AnyCPU</Platform> 

それでも同じ問題を。それが「AnyCpu」や「Any CPU」である可能性があることを示唆しているので、私は両方を試した。まだ運がありません。エラーが同じまま

<ItemGroup> 
    <ConfigurationToBuild Include="Release|Any CPU"> 
     <FlavorToBuild>Release</FlavorToBuild> 
     <PlatformToBuild>Any CPU</PlatformToBuild> 
    </ConfigurationToBuild> 
    </ItemGroup> 

または

<PlatformTarget>AnyCPU</PlatformTarget> 

:他のフォーラムへの投稿ではなく、このような何かを示唆しました。だからあなたのstackoverflowersへの私の質問は:任意のCPUのWebサイトを構築しようとしている間違って何かをやっていますか?明示的にいくつかの引数を<CallTarget Targets="Build"/>に渡す必要がありますか?

私はMSbuildをあまり経験していないので、重要なことを見落とすことがあります。私は他のWebアプリケーション(Webサイトではない)が問題なく同じCOMコンポーネントと通信しているので、Webサイトにのみ問題があります。 Webアプリケーションは、このように構築されています。ここでは

<MSBuild 
     Projects="$(ProjectFile)" 
     StopOnFirstFailure="true" 
     Targets="ResolveReferences;_CopyWebApplication;_BuiltWebOutputGroupOutput" 
     Properties="...Platform=AnyCPU..." /> 

私はので、私はちょうど私がウェブサイトのための類似した何かを必要と推測しています、プロパティとしてプラットフォームを渡します。

答えて

0

MSbuildの3.5バージョンを使用して問題を解決しました。私は3.5 toolsversionで4.0バージョンを使用していました。何らかの理由により、interop dllが間違ったプラットフォーム上に構築されていました。しかし、なぜこの問題を引き起こしているのか分かりません。私は、3.5プロジェクト用にMSbuild 4.0を使用することでいくつかの奇妙な問題を見てきました。誰かが私にこれらのことが起こる理由を教えてもらえれば、私は幸せになれます。

関連する問題