微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从AssemblyCatalog 中读取Assembly 的零件定义

如何解决如何从AssemblyCatalog 中读取Assembly 的零件定义

我有一个 C# 项目在 .NET framework 4.6.2 和 .NET core 3.1 上运行,代码最可共享。在 .NET 框架中运行时,它使用 AssemblyCatalog 类从 x86 bin 路径加载程序集及其部件定义。但是,当代码在从 netstandard2.0 加载程序集的 .NET Core 中运行时,这里的部件定义为空并且只获取程序集信息(如果核心和标准中的 API 不可用,我如何获取程序集首先是信息?)。

Image: Parts loading from framework assembly

Image: Parts are not loading from core assembly

我正在为 Net 框架使用 AssemblyCatalog(命名空间:System.ComponentModel.Composition.Hosting),但在 micrososft .NET API 浏览器中,此托管 API 在 .NET core/.NET 标准中不可用。

如果这个 API 没有移植到 Core 中,我怎么能至少看到程序集信息?有人可以帮助我从 .NET 核心中的程序集获取零件定义吗?下面是当前正在尝试实现工作的示例 .NET Core 项目代码

using System;
using System.Reflection;
using System.ComponentModel.XXXXXX

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            // path to dll: F:/projFolder/bin/x86/debug/netstandar2.0/*.dll
            // catalog should return both Assembly information and Parts
            SafeAssemblyCatalog catalog = new SafeAssemblyCatalog("path to dll");
        }

        internal class SafeAssemblyCatalog : AssemblyCatalog //<== cant inherit 
        {
            private bool _isAssemblyLoad;

            public SafeAssemblyCatalog(string dllPath) : base(Assembly.LoadFrom(dllPath))
            {
                _isAssemblyLoad = true;
            }
        }
    }
}

请您的专业知识帮助我解决在这里面临的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。