我查看过How do I prevent the app.config from being integrated into a .net Library (dll)
之前的帖子但这些对我的情况没有帮助。
我无法将我的Outlook插件app.config
编译到dll中。我假设它正在编译,因为它第一次加载时我要求应用程序使用以下方法显示其配置文件的路径:
MessageBox.Show(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile.ToString());
这将返回
中文件的路径C:\Users\...\AppData\ [random name]\outlookadddin.config
而不是使用位于与dll本身相同的文件夹中的app.config
。
我是否可以强制配置管理器在与程序集相同的文件夹中引用dll而不是自己创建一个?
更新 找到后: how do I make my application read the application config instead of machine.config?
似乎部分推进了解决方案,很快解释说,它是通过ClickOnce \ MSI部署VSTO的一个已知问题。您需要将 | VSTOLOCAL 添加到注册表清单密钥路径。
我现在面临的问题是,如果我在网络驱动器上安装我的插件,使用| VSTOLOCAL它只是不会加载,删除| VSTOLOCAL它就像一个魅力。任何想法?
答案 0 :(得分:1)
好的,我终于找到了答案: 从vsto 4.0开始 - 你必须在manifest注册表项的末尾有| vstolocal才能使用文件夹中的.config文件而不是缓存。
我的问题通过将| VSTOLOCAL添加到regkey来解决,但由于我希望将addin dll放在NETWORK驱动器上,这导致outlook的信任问题,由于某种原因,它似乎不支持网络驱动器安装默认添加。
通过添加此注册表项解决了这些问题:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\vsto runtime Setup\v4]
"EnableVSTOLocalUNC"=dword:00000001
现在一切顺利。 谢谢大家。