阻止将App.Config编译到dll VSTO(C#.Net)中



我查看了之前的帖子,比如我如何防止app.config集成到.net Library(dll)中

但这些对我的处境没有帮助。

我在保持Outlook加载项app.config未编译到dll中时遇到问题。我假设它正在被编译,因为当它第一次加载时,我要求应用程序使用向我显示其配置文件的路径

MessageBox.Show(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile.ToString());

这将返回中文件的路径

C:Users...AppData [random name]outlookadddin.config

而不是使用与dll本身位于同一文件夹中的CCD_ 2。

我可以强制配置管理器引用与程序集位于同一文件夹中的dll,而不是创建自己的dll吗?

更新:在发现以下内容之后:如何让我的应用程序读取应用程序配置而不是machine.config?

它似乎部分地推进了一个解决方案,很快解释道,这是通过ClickOnce\MSI部署VSTO的一个已知问题。您需要将|VSTOLOCAL添加到寄存器清单密钥路径。

我现在面临的问题是,如果我在网络驱动器上安装我的插件,使用|VSTOLOCAL,它根本不会加载,删除|VSTOLOCAL,它就像一个魅力。有什么想法吗?

好吧,我终于找到了答案:它出现在vsto 4.0之后-您必须在清单注册表项的末尾有|vstolocal,它才能从文件夹而不是缓存中使用.config文件。

我的问题通过将|VSTOLOCAL添加到regkey中得到了解决,但由于我希望将加载项dll放置在NETWORK驱动器上,这导致了outlook的信任问题,由于某种原因,outlook默认情况下似乎不支持网络驱动器安装的加载项。

通过添加以下注册表项解决了这些问题:

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftvsto runtime Setupv4]
"EnableVSTOLocalUNC"=dword:00000001

现在一切都很好。谢谢大家。

最新更新