我需要翻译的是关于IT技术的内容,您的.net Core 3.0应用程序试图通过反射调用 .Net Framework 4.8。我们的目标是使用ConfigurationManager读取加密的AppSettings.config(xml),但在 .Net Core中不可能读取CipherData这种加密方式,只能读取未加密的数据。
我的反射代码访问一个静态类和方法,如下所示:
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;
该方法使用反射读取加密配置信息时出错,报错信息如下: FileNotFoundException: 无法加载文件或程序集“System.Configuration.ConfigurationManager, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”。系统找不到指定的文件。 因此,我在 .Net Framework 4.8 中编写了一个代理程序,并使用相同的代码来访问通过反射读取加密配置的代码,它能够正常工作。
然后,我编写了 .NET Core 3.0 来通过反射访问该代理程序,但失败了。代理 .Net Framework 4.8 没有任何引用。它是裸机的。但是,即使代理没有要求,Core 仍然需要 ConfigurationManager。ConfigProgram 只有一个引用 - System.Configuration。
Core 3.0 => 加密 App.config => 失败
Core 3.0 => ConfigProgram 4.8 => App.Config => 失败
ConfigProgram 4.8 => App.config => 可行
代理 4.8 => ConfigProgram 4.8 => App.Config => 可行 Core 3.0 => 代理 4.8 => ConfigProgram 4.8 => App.Config => 失败
我猜测,虽然 4.8 的反射调用不需要引用 System.Configuration,但通过裸机中间步骤 .NET Core 3.0 仍然需要。请问有谁能帮帮我?