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

C# 阻止将App.Config编译到dll VSTO(C\\.Net)中,c#,.net,vsto,configurationmanager,C#,.net,Vsto,Configurationmanager,我查看了以前的帖子,比如 但这些并没有帮助我解决我的处境 我无法将Outlook加载项app.config编译到dll中。我假设它正在编译,当它第一次加载时,我要求应用程序使用以下命令向我显示其配置文件的路径: MessageBox.Show(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile.ToString()); 这将返回位于的文件的路径 C:\Users\...\AppData\ [random name]\outloo

我查看了以前的帖子,比如

但这些并没有帮助我解决我的处境

我无法将Outlook加载项
app.config
编译到dll中。我假设它正在编译,当它第一次加载时,我要求应用程序使用以下命令向我显示其配置文件的路径:

MessageBox.Show(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile.ToString());
这将返回位于的文件的路径

C:\Users\...\AppData\ [random name]\outlookadddin.config
而不是使用与dll本身位于同一文件夹中的
app.config

我是否可以强制configuration manager引用与程序集位于同一文件夹中的dll,而不是创建自己的dll

更新: 找到此项后:

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


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

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

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

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\vsto runtime Setup\v4]
"EnableVSTOLocalUNC"=dword:00000001
现在一切正常。
谢谢大家。

不清楚您的意思-首先,没有任何
app.config
被编译或集成到DLL中-其次,
app.config
是一个仅在设计时使用的文件-它在编译时被重命名为
(yourproject).exe.config
yourproject.DLL.config
。谢谢您的评论。是的,是的,但由于某些原因,我的project.dll.config文件(与程序集位于同一文件夹中)没有被使用,它被发送到\bin\release文件夹,但我可以简单地将其删除。应用程序似乎完全忽略它,并在..\users\appdata下的随机位置创建自己的配置文件副本[…]\project.dll.config这是标准的.NET配置行为-从不使用dll的配置,您必须将配置添加到宿主应用程序(例如,主应用程序或网站)因此,您基本上是说我使用dll配置文件的唯一方法是将其命名为Outlook.exe.config并将其放入office文件夹?或者您需要自己显式加载任意命名的配置(使用`ConfigurationManager.OpenMappedExeConfiguration),然后自己滚动(有关详细信息,请参阅MSDN文档)