Хорошо, так что некоторое время вперед я опубликовал, как читать другие файлы конфигурации других программ (вот ссылка Предыдущий пост . Мне удалось это сделать. Но теперь есть другая проблема. Сценарий вот так у меня есть две программы: Программа A считывает свою конфигурацию из файла конфигурации, а программа B используется только для изменения содержимого файла конфигурации, который A * 1008. * читает. Имя файла конфигурации: email.config . Он находится в том же каталоге, в котором находится программа A & B .
Проблема в том, что я получаю путь к файлу для вложения, используя диалог открытия файла. Если путь указывает на файл в том же каталоге, программа работает отлично! Но если он указывает на файл вне каталога, он генерирует исключение типа System.NullReferenceException .
Вот код
private void saveBtn_Click(object sender, EventArgs e)
{
try
{
// save everything and close
string attachment = attachTxtBox.Text;
var configMap = new ExeConfigurationFileMap { ExeConfigFilename = configFileName };
// it throws exception here when
// the path points to a file outside the exes directory
Configuration externalConfig = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
externalConfig.AppSettings.Settings["ServerAddress"].Value = serverAddr;
externalConfig.AppSettings.Settings["Port"].Value = port;
externalConfig.AppSettings.Settings["SSL"].Value = ssl.ToString();
externalConfig.AppSettings.Settings["Sender"].Value = senderAddr;
externalConfig.AppSettings.Settings["SenderPassword"].Value = password;
externalConfig.AppSettings.Settings["Subject"].Value = subject;
externalConfig.AppSettings.Settings["AttachmentPath"].Value = attachment;
externalConfig.AppSettings.Settings["Body"].Value = messageBody;
// Save values in config
externalConfig.Save(ConfigurationSaveMode.Full);
Application.Exit();
}
catch (System.Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
Application.Exit();
}
}
Содержимое email.config :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="">
<clear />
<add key="ServerAddress" value="" />
<add key="Port" value="" />
<add key="Sender" value="" />
<add key="SenderPassword" value="" />
<add key="Subject" value="" />
<add key="AttachmentPath" value="" />
<add key="Body" value="" />
</appSettings>
</configuration>
Что я здесь не так делаю?
РЕДАКТИРОВАТЬ: Значение configFileName равно "email.config"