如何解决如何获得程序集的目标框架?
我正在使用 Mono.Cecil 加载不同的程序集,我想知道该程序集是针对 .NET Framework 还是 .NET Core。
我尝试过的是检索自定义属性 TargetFrameworkAttribute :
[assembly:TargetFramework(".NETFramework,Version=v4.0",FrameworkDisplayName = ".NET Framework)]
使用下面的代码
var targetFrameWorkAttributes = assemblyDefinition.CustomAttributes
.Where(attribute => attribute.AttributeType.Name == nameof(TargetFrameworkAttribute));
var customAttribute = targetFrameWorkAttributes.FirstOrDefault();
var customAttributeValue = customAttribute?.ConstructorArguments.FirstOrDefault().Value.ToString();
这里的问题是并非所有程序集在其元数据中都具有此属性。
我的问题是:
除了检索自定义属性之外,是否还有其他方法可以检测程序集是否针对 .NET Core 或 .NET Framework 运行时?
注意我曾想过对于 .NET Core 我可以以某种方式解析 *.deps.json
并检索 runtimeTarget 对象,但它仅适用于 .NET Core,而且会很复杂。
"runtimeTarget": {
"name": ".NETCoreApp,Version=v3.1","signature": ""
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。