[英]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
下编译项目时会丢失更多文件。 这些是:
我有两个问题:
ASP.NET WebApi
二进制文件的控制器中的所有端点/方法? 难道我做错了什么?重现步骤:
.NET5
ASP.NET Core WebApi
项目。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.