集成和单元测试不再在ASP.NET Core 2.1上运行,无法在运行时找到程序集

马丁·乌尔里希(Martin Ullrich):

创建测试项目或升级应用程序并测试到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应用程序?

马丁·乌尔里希(Martin Ullrich):

更新:通过2.2 Tooling可以更轻松地进行此操作即使在构建2.1应用程序时请确保您的dotnet --versionSDK版本至少为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应用程序。需要修改/更新测试项目,以通过以下方法之一使用此共享框架:

  1. <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>
    
  2. 替代方案:保持Sdk原样PackageReference,并向共享框架包中添加一个,但指定一个版本。

    只需添加NuGet引用即可完成Microsoft.AspNetCore.App但是,这可能会引起问题,因为在发布ASP.NET Core的新修补程序版本时,SDK可能会选择更新引用,并且工具也会进行更新以反映这一点。您需要为每个修补程序版本更新NuGet参考。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用.NET Core MSTest运行单元测试:“未找到以下TestContainer ...”

如何在ASP.NET Core 1 MVC 6中模拟IFormFile进行单元/集成测试?

如何对ASP.NET Core Web应用程序(.Net Framework)进行单元测试?

ASP.Net Core注册控制器在运行时

.NET Core运行时

ASP.NET Core 2.1 Preview 2 App无法在Azure App Service上运行

ASP .Net Core在运行时更改路由

如何在运行时在ASP.Net Core中创建URL重写?

在运行Asp.Net Core 2的Webapi 2上,带有Serilog的DI ILogger

在IIS上运行时使用Net Core 2修改生成的web.config文件

无法在运行时通过IIS托管的ASP.NET Core应用程序设置ODBC源

ASP.NET Core依赖注入:在运行时传递参数

在运行时,Asp.net Core 2.2和Entity Framework Core中的数据库架构不会更改

如何从Azure Devops运行.Net Core 2.1,已编译的MsTest单元测试程序集?

在ASP.NET Core MVC中在运行时动态绑定模型

Asp.Net Core MVC Web应用程序中的单元测试

在ASP.NET Core中在运行时扩展Autofac IoC容器配置

部署没有运行时和程序包的ASP.NET Core?

Razor页面在运行时无法在ASP.NET Core RC2中看到引用的类库

ASP.NET Core依赖项注入:服务在运行时使用Func委托解析

.NET Core 1.1 和运行时本地化

在 ASP .NET Core 中在运行时设置模型绑定表单字段名称

如何在运行时更改 asp.net core 中的启动数据?

ASP.NET Core MVC - 在运行时绑定到模型

在 ASP.NET Core Angular 应用程序运行时更改主题的热门话题

如何确定是否在运行时启用端点路由 ASP.Net Core

在运行时为 ASP.NET Core 缩小动态生成的 JavaScript

无法更改 ASP.NET Core Web App 中生成的 DLL 的运行时版本

.NET Core NUnit 上的单元测试失败