我已经创建了一个表示Visual Studio Project向导的Visual Studio扩展(vsix包)。我正在尝试连接log4net,但未成功。我已将问题归结为我的app.config无法正确加载。
我已在Visual Studio扩展中将其添加到我的app.config中:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="test" value="hello world"/>
</appSettings>
</configuration>
并且在我的IWizard实现中,我添加了以下代码行:
var test = System.Configuration.ConfigurationManager.AppSettings["test"];
但是,上面的test
变量在调试时始终为空。
我已经验证了这些内容:
C:\Users\<user>\AppData\Local\Microsoft\VisualStudio\16.0_...\Extensions\<Name>\<Company>\1.0
文件夹中我想念的是什么?而且,如果在VSIX扩展开发中不允许App.config,您将如何连接log4net?
我想念的是什么?并且如果在VSIX中不允许App.config扩展开发,您将如何连接log4net?
一个App.Config文件在构建期间被复制并重命名为.exe.config,因此只有可执行文件可以直接通过ConfigurationManager拥有和使用“ App.Config”文件。通常,VSIX项目生成一个DLL,该DLL加载到Visual Studio可执行文件(devenv.exe)中,因此,直接使用ConfigurationManager的项目只能从devenv.exe.config(文件夹C:\ Program Files(x86 )\ Microsoft Visual Studio 16.0 \ Common7 \ IDE)。
并且当我在vsix项目中用我唯一的app.config
文件对其进行测试时,该项目似乎无法仅从默认值devenv.exe.config
中获得我的自定义文件的值,该默认值仅包含两个值TestProjectRetargetTo35Allowed
和[ C0]。这意味着在任何情况下,它都从devenv.exe.config获取值。
解决方案>>
1#。您只需在EnableWindowsFormsHighDpiAutoResizing
文件中定义新密钥,就可以直接从文件中获取它。
devenv.exe.config
2#。您可以通过代码获取此app.config并直接从中获取键的值。
,我建议solution2是解决您问题的更好,更轻松的方法。希望它能对您有所帮助。<appSettings> <add key ="TestProjectRetargetTo35Allowed" value ="true"/> <add key ="EnableWindowsFormsHighDpiAutoResizing" value ="true"/> insert new key here </appSettings>
另外