testing - 比較 - 実行時にアセンブリを見つけられないASP.NET Core 2.1で統合テストと単体テストが機能しなくなりました




xunit vscode (2)

ASP.NET Core 2.1は、ASP.NET Coreアプリケーションを実行するために新しい "共有フレームワーク"を使用します。 次のいずれかの方法で、この共有フレームワークも使用するようにテストプロジェクトを修正または更新する必要があります。

  1. 最初の行のテストプロジェクトの<Project>タグを変更してWeb SDK( Microsoft.NET.Sdk.WebではなくMicrosoft.NET.Sdk )を使用し、 Microsoft.NET.Sdk.Webへのパッケージ参照を追加します.All バージョンを指定せずに Webプロジェクト内で使用している)

    テストプロジェクトのプロジェクトファイル(.csproj)は次のようになります。

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.1.1" />
        <PackageReference Include="Microsoft.AspNetCore.App" />
        <!-- other references to xunit, test SDK etc. -->
      </ItemGroup>
    
      <ItemGroup>
        <ProjectReference Include="..\AspNetCoreAppToTest\AspNetCoreAppToTest.csproj" />
      </ItemGroup>
    
    </Project>
    
  2. 代替方法: PackageReferenceをそのままにして、 PackageReferenceを共有フレームワークパッケージに追加しますが、バージョンは指定します。

    これは、 Microsoft.AspNetCore.AppへのNuGet参照を追加するだけで実行できMicrosoft.AspNetCore.App 。 ただし、ASP.NET Coreの新しいパッチリリースがリリースされ、それを反映するようにツールが更新されるときにSDKが参照を更新することを選択する可能性があるため、これが問題を引き起こす可能性があります。 パッチリリースごとにNuGetリファレンスを更新する必要があります。

テストプロジェクトを作成するとき、またはアプリケーションをアップグレードしてASP.NET Core 2.1 / .NET Core 2.1にテストするとき、テストの実行は次のようなアセンブリロード例外で失敗します。

System.IO.FileNotFoundException:ファイルまたはアセンブリをロードできませんでした 'Microsoft.AspNetCore、バージョン= 2.1.0.0、カルチャ=ニュートラル、PublicKeyToken = adb9793829ddae60'。 システムは、指定されたファイルを見つけることができません。

他のライブラリへの参照を追加するときは、次のようなビルド警告もあります。

MSB3277の警告:異なるバージョンの "Microsoft.Extensions.Options"の間に矛盾が見つかったため解決できませんでした。
MSB3277の警告:異なるバージョンの "Microsoft.Extensions.Configuration.Abstractions"の間に競合が見つかり、解決できませんでした。
警告MSB3277:異なるバージョンの "Microsoft.AspNetCore.Hosting.Abstractions"の間に競合を見つけたため解決できませんでした。
MSB3277の警告:異なるバージョンの "Microsoft.Extensions.DependencyInjection.Abstractions"の間に競合が見つかり、解決できませんでした。
MSB3277の警告:異なるバージョンの "Microsoft.AspNetCore.Http.Abstractions"の間に矛盾が見つかり、解決できなかった。
MSB3277の警告:異なるバージョンの "Microsoft.AspNetCore.Http.Features"の間に競合が見つかり、解決できませんでした。

テストプロジェクトをASP.NET Core 2.1アプリケーションのテストに使用する方法を教えてください。


私は同じ問題を抱えていました。 テストプロジェクトにこれを追加して問題を解決しました

 <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.1"/>





asp.net-core-2.1