#vsto #outlook-addin #app-config #procmon
#vsto #outlook-надстройка #app-config #procmon
Вопрос:
У нас очень странная проблема с нашей надстройкой VSTO.
В нашей надстройке есть элементы управления label, которые считывают текстовые значения label из файла app.config и отображают текст из файла конфигурации пользователю:
<!-- app.config -->
<configuration>
<configSections>
...
</configSections>
<!-- start applicationSettings -->
<applicationSettings>
<OurVSTOAddIn.MySettings>
<setting name="ackMsg" serializeAs="String">
<value>Some text here that we want to display and change</value>
</setting>
...
<OurVSTOAddIn.MySettings>
</applicationSettings>
</configuration>
'vb.net code
objCheckDialog.lblAttachmentsMsg.Text = My.Settings("attachmentsAckMsg").ToString()
objCheckDialog.lblAttachmentsMsg.Visible = True
Недавно мы обновили файл app.config, чтобы заменить информацию на английском языке на кандзи для наших конечных пользователей в Японии.
Когда мы перестроили MSI и установили на наш тестовый компьютер, надстройка не отображает Kanjii (хотя в процессе разработки она отображается корректно).
Теперь нам интересно, читается ли файл конфигурации в каталоге установки вообще, или информация кэшируется, или надстройка где-то читает из другого файла.
Что еще более странно, так это то, что мы изменили другие значения в нашем файле app.config, которые используются в code logic, и они, похоже, загружаются правильно.
В настоящее время мы используем Procmon, чтобы выяснить, как загружается файл конфигурации, однако при фильтрации по следующему:
- Имя процесса содержит Outlook
- Путь содержит «OurOutlookPlugInName»
Это приводит к более чем 400 результатам, но мы не видим никакой обработки файла для нашего файла конфигурации, если я не отлажу код в Visual Studio.
На нашем установочном компьютере мы также удалили файл конфигурации из каталога установки, думая, что это может быть ключом к тому, считывает ли надстройка файл конфигурации из каталога установки, но это не возымело никакого эффекта, и надстройка загрузилась нормально, снова отображая английский вместо кандзи.
Все настройки конфигурации находятся на уровне приложения.
Есть ли у нас способ определить, откуда наша надстройка загружает наш файл конфигурации?
Мы сделали что-то неправильное в нашей сборке MSI, что помешало бы загрузке обновленного файла конфигурации?
Обновить:
Я открыл файл DLL в C:Program Установочный каталог Files (x86) OurVSTOAddIn с помощью Telerik JustDecompile, чтобы узнать, были ли параметры конфигурации записаны где-то в dll, и я вижу, что в разделе OurVSTOAddIn-> Мои настройки там определенно есть DefaultSettingValues, как показано ниже:
Это имело бы смысл, поскольку это параметры, относящиеся к области приложения, и это помешало бы пользователю изменять настройки конфигурации.
Но я думаю, что если мы будем использовать переменные области приложения, каждый раз нам нужно будет перестраивать msi для выпуска, что для меня не имеет смысла, поскольку причина, по которой мы хотим использовать параметры конфигурации для проекта, заключается в том, что нам не нужно перестраивать для изменений конфигурации.
Комментарии:
1. Это может быть действительно глупый вопрос, но что это
<setting>
? Мои переменные app.config выглядят не так, они выглядят так:<appSettings><add key="key" value="value" /></appSettings>
2. обновлено app.config для наглядности.
3. Если я правильно читаю, вы собираетесь использовать app.config для его преимуществ конфигурации во время выполнения? Раньше это звучало по-другому, поэтому я не думал, что это актуально, но это плохо работает для VSTO. Надстройки устанавливаются в папку кэша VSTA в анонимизированной папке, и чтобы внести какие-либо изменения в этот файл, вам придется повторно подписать развертывание, а затем отменить / переустановить надстройку. Невозможно для большинства случаев использования.
4. Да, причина, по которой мы хотим использовать параметры конфигурации, заключается в том, что нам не нужно каждый раз перестраивать для простого изменения конфигурации, то есть добавления адреса электронной почты. Мы изменили область с User на Application scope на вкладке Project Properties->Settings в Visual Studio, и я думаю , что приложение восприняло изменения до того, как мы изменили настройки области приложения.
5. Это не ответ на ваш вопрос, но похоже, что вам нужен другой подход.
app.config
на самом деле это не моя специальность, но, возможно, вы можете сохранить его копию отдельно в общедоступном месте и явно загрузить ее во время выполнения? Или просто сохраните его в совершенно другом файле. Мне не кажется, что этот файл является подходящим местом для локализации; возможно, идентификатор языка, но не метки и тому подобное.