2013-08-26 31 views
38

Automapper 3.0.0を使用してプロジェクトを更新しました。Automapper 3.0 - このタイプはこのプラットフォームではサポートされていませんIMapperRegistry

... System.PlatformNotSupportedException:System.PlatformNotSupportedException:このタイプは、このプラットフォームのIMapperRegistryでサポートされていません。」というエラーは次のとおりです

が、私はこの問題を解決することができ、誰もがあります。 一方、私は以前のバージョンに戻すつもりですが、それはうまくいくようです。

答えて

28

メインアプリケーションのAutoMapperとAutoMapper.Net4アセンブリの両方に参照を追加する(またはNuGetパッケージ参照を追加する)ことをアプリケーションに必ず確認してください。 Visual Studioには、使用されていないと思われる参照をコピーしない参照のコピーに問題があります。例えば

、あなたはプロジェクトがある場合: - コア - UIを

とコアがAutoMapperは、あなたが両方のアセンブリに同様のUIでの参照を追加してください参照します。 NuGetはこれを自動的に行いますが、MSBuildはCoreからUIへのすべての参照をコピーしません。これを修正する最も簡単な方法は、UIにAutoMapperパッケージ参照を追加することです。

+0

うん、AutoMapper.Net4アセンブリへの参照の不足のようです。私のプロジェクトはVS2012(デバッグかどうか)で正常に動作しますが、スタンドアロンを実行していないときは、スクリプトを実行環境にコピーするために使用されていましたが、新しいアセンブリAutoMapper.Net4.dllをアプリケーションフォルダにコピーします。 –

+4

これは、AutoMapperビルドで両方のアセンブリを結合する必要があるように見えます。私は、多くの人々がAutoMapperを「サービスレイヤー」アセンブリで使用していて、問題を明示するWeb probjectではなく使用しています。これは可能ですか?私はあまり「参照ナチ」ではないが、上流の依存関係にautomapper "unused"を追加する必要があるのは、より良い解決策があるようだ。 –

+3

私のために、Automapperを私のユニットテストプロジェクトにインストールしなければならなかったので、私のユニットテストが再び機能しました。 HTH –

38

ビルドサーバーでも同じ問題がありました。 MsTestは不要とみなされたDLLを削除したように見えました(注:この主張は教育上の推測に過ぎません)。これを修正するには、AutoMapper.Net4.dll内の何かに明示的な呼び出しを追加します。例えば、クラスListSourceMapperで:私たちのためにそれを固定し、他のすべてのプロジェクトで共有されているプロジェクトにこれを追加する

var useless = new ListSourceMapper() 

。このコード行はどこに配置するかは異なります。

+0

ありがとう、私もこれをやらなければなりませんでした。このデータが役立つ場合は、@ JimmyBogard FYI – Josh

+1

あなたはこの種のことをしなければならないばかげている。しかし、面倒なことに、それは私のために働いた。ありがとう! – demoncodemonkey

+0

これは不自由な修正であることに同意しますが、すべてのテストはこれを追加した後にもう一度やり直すようになりました。 – Colin

2

作成したmstest統合テストで同じ問題が発生しました。

コード内の直接参照ではなく、テストクラスでDeploymentItem属性を使用することをお勧めします。たとえば、これは私が持っているものです。

[TestClass] 
[DeploymentItem("Unity.config")] 
[DeploymentItem("EntityFramework.SqlServer.dll")] 
**[DeploymentItem("AutoMapper.Net4.dll")]** 
public class MyFancyIntegrationTests 
{ 

また、あなたのテストプロジェクトにautomapperし、nugetを使用して、前述したように、参照を追加する必要があります。

これをトラブルシューティングするには、mstestプロジェクトのbinディレクトリを表示します。 Autoapperがプロジェクトで参照されている場合は、Automapper.dllとAutoMapper.Net4.dllの両方が表示されます。 DemploymentItem属性をテストクラスに追加する前に、TestResults [MyLatestTestRun]フォルダにAutoMapper.Net4.dllが表示されません。しかし、属性を追加すると、あなたはなります。

0

MSTestを射出とうまく再生されない

...私はMSTESTを実行するために、チームシティーを使用して同じ問題を抱えていたし、何の解決を見つかりませんでした。

Visual Studio Test Runnerを使用する必要があることが判明しました。

詳細情報が見つかりましたin this blog post

Team City 8.1には、VSTest.Console Test用のビルドステップがあります。

これは私のために働いた。私は上記のブログでPowerShell scriptを使用する必要はありませんでした。 AutoMapper 3.1.1へ

1

更新が私のために、この問題を修正し

Update-Package AutoMapper -Version 3.1.1

関連する問題