c# - C# 控制台配置重命名和重定位
问题描述
我想弄清楚如何让它工作。我有 ac# 控制台应用程序。构建后,我得到的默认配置文件是myApp.exe.config 我想实现以下目标:
- 我想将配置文件重命名为 myApp.xml
- 我想把它放在某个调度系统管理的不同位置。
我通过执行以下操作使其工作:
private static void resetConfig()
{
var directory = System.IO.Directory.GetCurrentDirectory();
var filename = $"{directory}\\myApp.xml";
if (File.Exists(filename))
{
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", filename);
typeof(ConfigurationManager)
.GetField("s_initState", BindingFlags.NonPublic |
BindingFlags.Static)
.SetValue(null, 0);
typeof(ConfigurationManager)
.GetField("s_configSystem", BindingFlags.NonPublic |
BindingFlags.Static)
.SetValue(null, null);
typeof(ConfigurationManager)
.Assembly.GetTypes()
.Where(x => x.FullName ==
"System.Configuration.ClientConfigPaths")
.First()
.GetField("s_current", BindingFlags.NonPublic |
BindingFlags.Static)
.SetValue(null, null);
}
}
但是,最近我升级了一些软件包。运行它时出现以下错误。
未处理的异常:System.IO.FileLoadException:无法加载文件或程序集“SomePackage,Version=6.0.0.0,Culture=neutral,PublicKeyToken=f3619abdd9aa739d”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
升级包后我注意到的配置差异是添加了一些新的运行时部分:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="SomePackage" publicKeyToken="f3619abdd9aa739d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.2.1.2" newVersion="6.2.1.2" />
</dependentAssembly>
</runtime>
有谁知道如何解决上述错误?