如何在 Visual Studio 2010 AddIn 中封装用户设置(选项页面)

发布于 2024-11-19 08:06:52 字数 1390 浏览 2 评论 0原文

我目前正在开发 Visual Studio 扩展,并且对选项页面。选项页面允许用户保存有关您的扩展的设置。 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 AddIn 包。

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

public interface IParameter
{
    string GetTfsServerUrl();
}

您知道我如何开发一个干净的解决方案来从另一个程序集中获取这些参数吗?

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

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

多谢。

I'm currently developping a Visual Studio Extension and I have a question about Options Page. Options Page allows user to save setting about your Extension. Visual Studio handle a lot of work for us.

I created the Options Page.

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; }
    }
}

First, I created a method in the Visual Studio Package to acces to the Options Page.
Okay so now, from my Package, I can easily acces to the settings.

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

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

Now, I want to be able, in another library (Another project, included in the VSIX Package), to get easily these values. I don't want to reference the Visual Studio AddIn Package in my library.

I also have Unit Test so I'm going to create an Interface. During Unit Test, I going to Mock the object.

public interface IParameter
{
    string GetTfsServerUrl();
}

Do you have any idea about how I can develop a clean solution to get these parameters from another assembly ?

Do you think the better solution is to inject the AddIn dependency in my library ?

If you already developed a Visual Studio Extension, How did you encapsulated the user setting from your core assembly ?

Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

热风软妹 2024-11-26 08:06:52

你可以尝试这样的事情:

// 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;

You can try something like that:

// 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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文