我有一个使用C# .Net编写的控制台应用程序,用于执行FTP操作。
目前,我在自定义配置节中指定设置,例如:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="ftpConfiguration" type="FileTransferHelper.FtpLibrary.FtpConfigurationSection, FileTransferHelper.FtpLibrary" />
</configSections>
<ftpConfiguration>
<Environment name="QA">
<sourceServer hostname="QA_hostname"
username="QA_username"
password="QA_password"
port="21"
remoteDirectory ="QA_remoteDirectory" />
<targetServer downloadDirectory ="QA_downloadDirectory" />
</Environment>
</ftpConfiguration>
</configuration>
我想在命令行中指定一个外部配置文件。
但是!!!
我刚刚意识到上面的“FtpConfiguration”部分并不真正属于应用程序的app.config文件。我的最终目标是,我将有许多定时任务执行我的控制台应用程序,就像这样:
FileTransferHelper.exe -c FtpApplication1.config
FileTransferHelper.exe -c FtpApplication2.config
...
FileTransferHelper.exe -c FtpApplication99.config
因此,我相信我走了一条错误的路线,我真正想要的是在我的自定义xml文档中读取内容,但继续使用System.Configuration来获取值……而不是读取XmlDocument并序列化以获取节点/元素/属性。(虽然,如果有人能向我展示一些简单的代码,我也不反对后一种方法)指针将不胜感激。谢谢。更新: 我接受的答案是链接到另一个StackOverflow问题,下面是我的代码 - 正是我正在寻找的 - 使用OpenMappedExeConfiguration打开我的外部配置文件。
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename = @"D:\Development\FileTransferHelper\Configuration\SampleInterface.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
FtpConfigurationSection ftpConfig = (FtpConfigurationSection)config.GetSection("ftpConfiguration");