我们如何确定VSTO Outlook加载项中正在加载哪个App.Config文件?

时间:2019-04-05 14:03:50

标签: vsto outlook-addin app-config procmon

我们的VSTO加载项有一个非常奇怪的问题。

在我们的外接程序中,有一些标签控件,它们可以从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文件中用于代码逻辑的其他值,这些值似乎已正确加载。

我们目前正在使用Procmon,以试图找出配置文件的加载方式,同时对以下内容进行过滤:

  • 进程名称包含Outlook
  • 路径包含“ OurOutlookPlugInName”

这会产生400多个结果,但是除非在Visual Studio中调试代码,否则我们不会看到配置文件的任何文件处理。

在我们的安装机器上,我们还从安装目录中删除了配置文件,以为这可能是插件是否正在从安装目录中读取配置文件的线索,但是它没有任何作用,并且添加-在加载后,通常显示英文而不是汉字。

所有配置设置都在应用程序级别。

有没有办法告诉我们加载项从何处加载配置文件?

我们是否在MSI构建中做了一些不正确的操作,以防止加载更新的配置文件?

  

更新:

我使用Telerik JustDecompile在C:\ Program Files(x86)\ OurVSTOAddIn安装目录中打开了dll文件,以查看配置设置是否写在dll中,并且可以在OurVSTOAddIn->“我的设置”下看到肯定是DefaultSettingValues,如下所示:

enter image description here

这很有意义,因为它们是“应用程序范围设置”,并且可以防止用户更改配置设置。

但是我在考虑是否使用Application Scoped变量,每次我们都需要重建要发布的msi时,这对我来说没有意义,因为我们要为项目使用配置设置的原因是:无需重建即可进行配置更改。

0 个答案:

没有答案