创建测试项目或升级应用程序并测试到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应用程序?
更新:通过2.2 Tooling可以更轻松地进行此操作。即使在构建2.1应用程序时,也请确保您的dotnet --version
SDK版本至少为2.2.100
只需在保持项目的同时为您的项目添加无版本的包引用即可Microsoft.NET.Sdk
:
<Project Sdk="Microsoft.NET.Sdk">
<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>
原版的:
ASP.NET Core 2.1使用新的“共享框架”在其上运行ASP.NET Core应用程序。需要修改/更新测试项目,以通过以下方法之一使用此共享框架:
<Project>
在第一行中更改测试项目的标记以使用Web SDK(Microsoft.NET.Sdk.Web
而不是Microsoft.NET.Sdk
),并添加一个包引用Microsoft.AspNetCore.App
(或者.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>
替代方案:保持Sdk
原样PackageReference
,并向共享框架包中添加一个,但指定一个版本。
只需添加NuGet引用即可完成Microsoft.AspNetCore.App
。但是,这可能会引起问题,因为在发布ASP.NET Core的新修补程序版本时,SDK可能会选择更新引用,并且工具也会进行更新以反映这一点。您需要为每个修补程序版本更新NuGet参考。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句