小编lis*_*pad的帖子

在运行时加载程序集 .NET 6

我们正处于将 ac# Winforms 应用程序从 .NET Framework 转换为 .NET 6 的开始阶段。我们可以在 .NET 6 中构建和运行项目,但是当涉及到动态加载的程序集时,我们遇到了问题。我们可以加载程序集,但尝试访问其中的自定义类会返回 null。我在两个较小的项目中重新创建了这个场景作为示例。

解决方案 1/项目 1 - 要加载到主应用程序中的程序集的代码。这是一个创建 TestAssembly.dll 的类库

namespace Custom.TestAssembly
{
    public class TestClass : CallingModule
    {
        public override object GetValue()
        {
            return "Hello World";
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

解决方案 2/项目 1 - 这是主应用程序解决方案中的项目和类。这是一个创建 Custom.TestAssembly.dll 的类库

namespace Custom.TestAssembly
{
    public class CallingModule
    {
        public virtual object? GetValue()
        {
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

解决方案 2/项目 2 - 已在表单上放置一个按钮。单击它时,应该加载程序集,事实确实如此。但是,尝试从程序集中提取类始终返回 NULL。

Form1.cs

using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Reflection.Emit; …
Run Code Online (Sandbox Code Playgroud)

c# .net-assembly winforms .net-6.0

2
推荐指数
1
解决办法
2868
查看次数

标签 统计

.net-6.0 ×1

.net-assembly ×1

c# ×1

winforms ×1