【问题标题】:How to encapsulate User Setting (Options Page) in Visual Studio 2010 AddIn如何在 Visual Studio 2010 AddIn 中封装用户设置(选项页)
【发布时间】:2011-07-10 15:17:29
【问题描述】:

我目前正在开发 Visual Studio 扩展,我有一个关于 Options Page 的问题。选项页面允许用户保存有关您的分机的设置。 Visual Studio 为我们处理了很多工作。

我创建了选项页面。

public class VisualStudioParameter : DialogPage
{
    private string _tfsServerUrl = DefaultParameter.TfsServerUrl;

    [Category("TFS Parameters")]
    [DisplayName(@"Server Name")]
    [Description("The URL of your TFS Server")]
    public string TfsServerUrl
    {
        get { return _tfsServerUrl; }
        set { _tfsServerUrl = value; }
    }
}

首先,我在 Visual Studio 包中创建了一个方法来访问选项页面。 好的,现在,我可以从我的包中轻松访问设置。

partial class SpecFlowTfsLinkerExtensionPackage : Package : IParameter
{
    ....
    ....

    public string GetTfsServerUrl()
    {
        return ((VisualStudioParameter) GetDialogPage(typeof (VisualStudioParameter))).TfsServerUrl;
    }
}

现在,我希望能够在另一个库(另一个项目,包含在 VSIX 包中)中轻松获得这些值。我不想在我的库中引用 Visual Studio 插件包。

我也有单元测试,所以我要创建一个接口。在单元测试期间,我将模拟对象。

public interface IParameter
{
    string GetTfsServerUrl();
}

您对我如何开发一个干净的解决方案以从另一个程序集获取这些参数有任何想法吗?

您认为更好的解决方案是在我的库中注入 AddIn 依赖项吗?

如果您已经开发了 Visual Studio 扩展,您是如何从核心程序集中封装用户设置的?

非常感谢。

【问题讨论】:

  • 有完整源代码的解决方案吗?

标签: visual-studio visual-studio-addins


【解决方案1】:

你可以试试这样的:

// Access DTE infrastructure
EnvDTE.DTE dte = Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
// Access options page
var props = dte.get_Properties(@"Your Extension", "General");        
var pathProperty = props.Item("TfsServerUrl");
path = pathProperty.Value as string;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多