首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net Core3.0通过反射调用.Net Framework4.8程序

.Net Core3.0通过反射调用.Net Framework4.8程序
EN

Stack Overflow用户
提问于 2019-09-09 01:07:15
回答 1查看 837关注 0票数 2

我有一个.net Core3.0应用程序试图通过反射调用.Net Framework4.8。我们的目标是使用AppSettings.config ( ConfigurationManager )读取加密的.Net,这在.Net核心中是不可能的。未加密的是,但加密(CipherData),否。

访问静态类和方法的反射代码如下所示:

代码语言:javascript
复制
        Assembly assembly = Assembly.LoadFrom(exeFullName);
        MethodInfo method = assembly.GetType(nameSpacenClass).GetMethod(methodName);
        if (method != null)
        {
            object rtnVal = method.Invoke(null, new object[] { jsonParms });
            return rtnVal;
        }
        else
            return null;

此异常消息导致method.Invoke错误: FileNotFoundException:无法加载文件或程序集'System.Configuration.ConfigurationManager、Version=4.0.2.0、Culture=neutral、系统找不到指定的文件。

因此,我在.Net Framework4.8中编写了一个代理程序,并使用相同的代码访问通过反射读取加密配置的代码,它运行良好。

然后,我编写了.net Core3.0代码,通过反射访问该代理,结果失败了。代理.Net框架4.8没有任何引用。是巴里伯恩。然而,核心仍然需要ConfigurationManager,即使代理不需要。Config程序只有一个引用-- System.Configuration。

核心3.0 =>加密App.config =>失败

核心3.0 => ConfigProgram 4.8 => App.Config =>失败

ConfigProgram 4.8 => App.config => Works

代理4.8 => ConfigProgram 4.8 => App.Config => Works

核心3.0 =>代理4.8 => ConfigProgram 4.8 => App.Config =>失败

我想参考的System.Configuration并不是4.8%的反射调用所必需的,但是即使通过.Net Core3.0中的barebone垫脚石也是必需的。有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-09 01:25:24

当您通过在.NET核心上的反射加载为.NET框架构建的程序集时,它不会加载.NET框架的任何部分--只是您的程序集(“用户cod")。有些部分可能起作用,也可能不起作用。在您的示例中,它失败了,因为为.NET框架编译的代码的请求类/程序集不是.NET核心的一部分。

这就是为什么开始启动.NET框架应用程序的情况--从而启动.NET框架运行时--才对您有用的原因。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57846835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档