我查看了之前的帖子,比如我如何防止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
现在一切都很好。谢谢大家。