c# - 如何获取程序集的目标框架?
问题描述
我正在使用 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": ""
}
解决方案
推荐阅读
- objective-c - 苹果手表处于睡眠模式时如何执行代码
- usdz - 转换为 USDZ 后显示为透明的对象
- jenkins - 根据选择触发依赖构建以将其作为独立构建运行
- android - 如何在不每次都构建的情况下加载路线?
- haskell - 为什么不在 Haskell 中进行类型检查?
- opc-ua - 从服务器获取 ServiceFault 响应
- c++ - 迭代时引用的数组对象不返回类变量 - 在抛出“std::logic_error”的实例后调用终止
- asp.net-mvc-5 - mvc 中的当前上下文中不存在名称“viewbag”
- php - 如何在 PHP 扩展中为每个线程封装全局变量?
- reactjs - 我无法从 ReactJS (SOAP) 中的服务器获取响应。我尝试同时使用 fetch 和 XMLHttpRequest