防止App.Config编译成dll VSTO (C#\.Net)

prevent App.Config compiled into the dll VSTO (C# \ .Net)

我查看了之前的帖子,例如 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());

此 returns 文件的路径

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

而不是使用与 dll 本身位于同一文件夹中的 app.config

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

更新: 找到这个之后: how do I make my application read the application config instead of machine.config?

它似乎部分推进了一个解决方案,简短地解释说,它是通过 ClickOnce \ MSI 部署的 VSTO 的一个已知问题。您需要将 |VSTOLOCAL 添加到注册表清单密钥路径。

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

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

我的问题通过将 |VSTOLOCAL 添加到注册表项得到解决,但由于我希望将插件 dll 放置在网络驱动器上,这导致了 outlook 的信任问题,出于某种原因似乎不支持网络驱动器-默认安装插件。

这些已通过添加此注册表项解决:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\vsto runtime Setup\v4]
"EnableVSTOLocalUNC"=dword:00000001

现在一切正常。 谢谢大家。