我们正处于将 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)