Как инкапсулировать пользовательские настройки (страница параметров) в надстройке Visual Studio 2010 - PullRequest
4 голосов
/ 10 июля 2011

В настоящее время я разрабатываю расширение 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 в моей библиотеке.

У меня также есть модульный тест, поэтому я собираюсь создать интерфейс.Во время модульного тестирования я собираюсь макетировать объект.

public interface IParameter
{
    string GetTfsServerUrl();
}

Есть ли у вас какие-либо идеи о том, как можно разработать чистое решение для получения этих параметров из другой сборки?

Как вы думаете,лучшее решение - внедрить зависимость AddIn в мою библиотеку?

Если вы уже разработали расширение Visual Studio, как вы инкапсулировали пользовательские настройки из сборки ядра?

Большое спасибо.

1 Ответ

2 голосов
/ 03 августа 2011

Вы можете попробовать что-то подобное:

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