C# 在VS 2012 C中单击插件从app.config获取值#

C# 在VS 2012 C中单击插件从app.config获取值#,c#,visual-studio-2012,plugins,app-config,t4,C#,Visual Studio 2012,Plugins,App Config,T4,我在VS 2012的C#中有一个插件解决方案。我必须执行T4模板点击这个插件。这些T4模板使用一些变量,这些变量在解决方案的app.config文件中定义为键值对中的键 问题是如何在点击插件时从App.config中读取值,然后如何在T4模板中使用这些值 有人请帮助我,提供一个简单的示例代码,用于在插件单击时访问app.config中的值,以及用于访问T4模板中检索到的值的代码。我不知道有任何内置API允许您在Visual Studio中的设计时访问配置文件,以便在T4模板中使用它们。您必须自己

我在VS 2012的C#中有一个插件解决方案。我必须执行T4模板点击这个插件。这些T4模板使用一些变量,这些变量在解决方案的app.config文件中定义为键值对中的键

问题是如何在点击插件时从App.config中读取值,然后如何在T4模板中使用这些值


有人请帮助我,提供一个简单的示例代码,用于在插件单击时访问
app.config
中的值,以及用于访问T4模板中检索到的值的代码。

我不知道有任何内置API允许您在Visual Studio中的设计时访问配置文件,以便在T4模板中使用它们。您必须自己打开并读取.config文件:

  • 通过Visual Studio自动化界面(EnvDTE)获取对项目的引用
  • 查找所需.config文件的项目项
  • 使用您选择的XMLAPI解析.config文件
  • 您还可以跳过步骤1+2并从其路径解析.config文件,但这不会是非常可重用的

    如果你不想深入研究自动化模型之类的东西,请看一下。它附带一个T4模板库。有一个T4文件准备包含在您的解决方案中,它为您提供了解决方案中任何.config文件中的appSettings和ConnectionString。查找“有形的Visual Studio配置帮助程序”。使用此选项,您的代码可能如下所示:

    <#
        var hostServiceProvider = this.Host as IServiceProvider;
        var dte = hostServiceProvider.GetService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
        var project = dte.Solution.Projects.Cast<EnvDTE.Project>().First();
        var configHelper = ConfigurationHelper.GetDefaultConfiguration(project);
    
        foreach(var appsetting in configHelper.AppSettings)
        {
    #><#= appsetting.Key #> = <#= appsetting.Value #>
      <#}
    #>
    
    =