ASP.NET Core 2.0 集成测试无法执行的问题
问题表现:
Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException : One or more compilation failures occurred:
ewiqttdv.z4g(4,62): error CS0012: The type 'Attribute' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
问题相关链接
https://github.com/dotnet/standard/issues/554
https://github.com/aspnet/Hosting/issues/959#issuecomment-286351703
解决方法
Add a new file 'xunit.runner.json' to the test project containg the following code:
{ "shadowCopy": false }
Then add the following code to the test project:
<!-- Solves Problem#1 (binding error) https://github.com/Microsoft/vstest/issues/428. --> <PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> <!-- Solves Problem#2 (404 when executing service calls hosted in other assemblies) --> <!-- https://github.com/Microsoft/vstest/issues/196.--> <ItemGroup> <None Update="xunit.runner.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup> <!-- https://github.com/NuGet/Home/issues/4412. --> <Target Name="CopyDepsFiles" AfterTargets="Build" Condition="'$(TargetFramework)'!=''"> <ItemGroup> <DepsFilePaths Include="$([System.IO.Path]::ChangeExtension('%(_ResolvedProjectReferencePaths.FullPath)', '.deps.json'))" /> </ItemGroup> <Copy SourceFiles="%(DepsFilePaths.FullPath)" DestinationFolder="$(OutputPath)" Condition="Exists('%(DepsFilePaths.FullPath)')" /> </Target>