Mar*_*ich 41 testing .net-core asp.net-core asp.net-core-2.1
在创建测试项目或将应用程序和测试升级到ASP.NET Core 2.1/.NET Core 2.1时,运行测试会因装配加载异常而失败
System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.AspNetCore,Version = 2.1.0.0,Culture = neutral,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应用程序?
Mar*_*ich 69
ASP.NET Core 2.1使用新的"共享框架"来运行ASP.NET Core应用程序.需要修改/更新测试项目,以便使用以下方法之一使用此共享框架:
更改dotnet --version第一行中的测试项目标记以使用Web SDK(2.2.100而不是Microsoft.NET.Sdk)并添加包引用<Project>(或者Microsoft.NET.Sdk.Web如果您在Web项目中使用它),而不指定版本
现在,测试项目的项目文件(.csproj)应如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)替代方法:保持Microsoft.NET.Sdk原样并添加Microsoft.AspNetCore.App到共享框架包但指定版本.
这可以通过简单地添加NuGet引用来完成.All.但是,这可能会导致问题,因为SDK可能会在发布ASP.NET Core的新修补程序版本并更新工具以反映此情况时选择更新引用.您需要为每个补丁版本更新NuGet参考.
EM0*_*EM0 10
该问题指定了ASP.NET Core 2.1,但是对于那些遇到与ASP.NET Core 2.2相同的问题的人,只需将以下内容添加到测试项目文件中即可:
<PackageReference Include="Microsoft.AspNetCore.App" />
Run Code Online (Sandbox Code Playgroud)
有没有必要设置Sdk="Microsoft.NET.Sdk.Web"了,你应该不是一个版本添加到上述卷装基准-这将导致警告。
| 归档时间: |
|
| 查看次数: |
7937 次 |
| 最近记录: |