繁体   English   中英

编译 .NET5 项目时缺少 Microsoft 库

[英]Microsoft libraries missing when compiling .NET5 project

我正在尝试反编译ASP.NET Core WebApi项目并从所有控制器收集所有方法。 当我的项目以.NETCore3.1为目标.NETCore3.1它通过运行以下代码工作:

Assembly assembly = Assembly.LoadFrom(assemblyPath); // assemblyPath pointed to .dll
var types = assembly.GetExportedTypes();

但是在更新到.NET5 ,上面的第二行( assembly.GetExportedTypes() )抛出一个异常,文件Microsoft.AspNetCore.Mvc.Core.dll丢失。 当我从旧项目(编译为 .NETCore3.1)手动复制该文件时,它起作用了!

最重要的是,当项目更复杂时,具有 EFCore 依赖项等等......在.NET5下编译项目时会丢失更多文件。 这些是:

  • Microsoft.Extensions.Hosting.Abstractions.dll
  • Microsoft.AspNetCore.Mvc.Abstractions.dll
  • Microsoft.AspNetCore.Authentication.Abstractions.dll

我有两个问题:

  • 为什么这些文件没有复制到输出文件夹?
  • 如何正确读取已编译ASP.NET WebApi二进制文件的控制器中的所有端点/方法? 难道我做错了什么?

重现步骤:

  • 创建面向.NET5 ASP.NET Core WebApi项目。
  • 创建其他面向 .NET5 的项目并实现这两行:
 var assemblyPath = "C:\\\\Projects\\\\Other\\\\DotNet5Test\\\\DotNet5Test\\\\DotNet5Test.WebApi\\\\bin\\\\Debug\\\\net5.0\\\\DotNet5Test.WebApi.dll"; Assembly assembly = Assembly.LoadFrom(assemblyPath); var types = assembly.GetExportedTypes();
  • 运行

编辑:

我尝试从 nuget 添加Microsoft.AspNetCore.Mvc.Core ,但未将Microsoft.AspNetCore.Mvc.Core.dll添加到输出文件夹

过去,我在各种项目中偶尔遇到过类似的问题。 对我来说最可靠的解决方案是通过 nuget 数据包管理器安装任何有问题的库。 在执行此操作之前删除您手动添加的任何依赖文件。

我认为问题在于 Microsoft.AspNetCore.Mvc.Core.dll 作为依赖于框架的部署 (FDD) 而不是自包含部署 (SCD) 的一部分提供。 .

鉴于我看到你之前发布的这个问题, 如何从 WebApi 二进制文件中检索控制器方法? 我有一种感觉,您正在尝试从面向 .net 5 的 wpf 应用程序执行代码,但该应用程序无法使用 FDD 来解析程序集。

答案可能是您需要更改您的 webapi 应用程序以使用 SCD 部署模型,但没有将 SCD 用于网络应用程序也许 google 会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM