Visual Studio Extension中的app.config?

问题描述 投票:0回答:1

我已经创建了一个表示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变量在调试时始终为空。

我已经验证了这些内容:

  • App.config设置为Build Action:Content
  • App.config设置为复制到输出目录:始终复制
  • App.config设置为包括在VSIX中:True
  • App.config文件存在于我的C:\Users\<user>\AppData\Local\Microsoft\VisualStudio\16.0_...\Extensions\<Name>\<Company>\1.0文件夹中

我想念的是什么?而且,如果在VSIX扩展开发中不允许App.config,您将如何连接log4net?

visual-studio-extensions vsix
1个回答
0
投票

我想念的是什么?并且如果在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并直接从中获取键的值。

 <appSettings>
    <add key ="TestProjectRetargetTo35Allowed" value ="true"/>
    <add key ="EnableWindowsFormsHighDpiAutoResizing" value ="true"/>
      insert new key here
  </appSettings>

另外

,我建议solution2是解决您问题的更好,更轻松的方法。希望它能对您有所帮助。
© www.soinside.com 2019 - 2024. All rights reserved.