Automapper 3.0.を使用するようにプロジェクトを更新しましたが、TFSビルドが成功しません。エラーは次のとおりです。
"... System.PlatformNotSupportedException:System.PlatformNotSupportedException:このタイプはこのプラットフォームではサポートされていませんIMapperRegistry。"
この問題を解決するのを手伝ってくれる人はいますか?それまでの間、以前のバージョンは正常に機能しているように見えるので、以前のバージョンに戻します。
ビルドサーバーでも同じ問題が発生しました。 MsTestは、不要と見なされたDLLを削除したようです(注:この主張は知識に基づいた推測にすぎません)。これを修正するには、AutoMapper.Net4.dll内の何かに明示的な呼び出しを追加します。たとえば、クラスListSourceMapperを使用すると:
var useless = new ListSourceMapper()
これを他のすべてのプロジェクトで共有されているプロジェクトに追加すると、修正されました。このコード行を配置する場所は異なる場合があります。
アプリケーションの参照をAutoMapperとメインアプリケーションのAutoMapper.Net4アセンブリの両方に追加する(またはNuGetパッケージ参照を追加する)ようにしてください。 Visual Studioには、使用されているとは思わない参照をコピーしないという参照のコピーに問題があります。
たとえば、プロジェクトがある場合:-コア-UI
また、コアはAutoMapperを参照します。必ず、UIでも両方のアセンブリに参照を追加してください。 NuGetはこれを自動的に実行しますが、MSBuildはすべての参照をCoreからUIにコピーするわけではありません。これを修正する最も簡単な方法は、UIにAutoMapperパッケージ参照を追加することです。
作成したいくつかのmstest統合テストでも同じ問題が発生しました。
コードで直接参照するのではなく、テストクラスでDeploymentItem属性を使用することをお勧めします。たとえば、これは私が持っているものです:
[TestClass]
[DeploymentItem("Unity.config")]
[DeploymentItem("EntityFramework.SqlServer.dll")]
**[DeploymentItem("AutoMapper.Net4.dll")]**
public class MyFancyIntegrationTests
{
また、前述のように、nugetを使用して、テストプロジェクトのオートマッパーに参照を追加する必要があります。
これをトラブルシューティングするには、mstestプロジェクトのbinディレクトリを表示します。プロジェクトでautomapperが参照されている場合は、Automapper.dllとAutoMapper.Net4.dllの両方が表示されます。 DemploymentItem属性をテストクラスに追加する前は、TestResults [MyLatestTestRun]フォルダーにAutoMapper.Net4.dllは表示されません。ただし、属性を追加すると、追加されます。
MSTestはインジェクションではうまく機能しません...
AutoMapper 3.1.1にアップデートすると、この問題が修正されました
Update-Package AutoMapper -Version 3.1.1
Team Cityを使用してMSTESTを実行するときに同じ問題が発生しましたが、解決策が見つかりませんでした。
Visual Studio Test Runner を使用する必要があることがわかりました。
私はより多くの情報を見つけました このブログ投稿で 。
Team City 8.1には、VSTest.Consoleテストのビルドステップがあります。
これは私のために働いた。上記のブログで PowerShellスクリプト を使用する必要はありませんでした。