Как можно глобально определить переменную в решении Visual Studio 2010? - PullRequest
3 голосов
/ 17 июня 2011

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

Достаточно одной переменной, если она может определить путь для листа свойств, который может содержать каждый проект.

Это желательно для решения. Переменная окружения будет в порядке, но менее желательна.

** (визуальное исследование 2010)

Снова взглянув на это, я не вижу, как настроить определяемый пользователем переменную $ (xxx) в проекте - да, вы можете это сделать в окне свойств, но в проекте у меня есть ссылка на $ (ProjectDir) -

Проблема в том, что я хочу определить $ (дерево корневых проектов), к которому может получить доступ любой проект, ссылающийся на конкретный проект, и корневой каталог будет относиться к этому проекту.

Альтернативой может быть, если лист свойств может иметь доступ к своему собственному пути и определять корень коллекции проектов (дерева связанных проектов с общими ресурсами) относительно этого.

Кажется, что у каждого, кто строит большую систему с VS, одна и та же проблема.

1 Ответ

1 голос
/ 17 июня 2011

Я не знаю ваш вариант использования, но это не лучшая идея. Это очень тесно свяжет все ваши проекты, что нарушает хороший дизайн ОО. По этой причине Microsoft не включила никаких свойств уровня решения. Однако, если вы действительно хотите сделать что-то подобное, у вас есть (по крайней мере) два способа сделать это.

Первый способ, который я бы рекомендовал против, - это сохранить переменную в одном из ваших проектов и сделать ее общедоступной. Тогда все ваши проекты могут получить к нему доступ, если они включают проект в качестве ссылки.

Вторым способом и способом, который сохранит некоторые принципы ОО, будет создание файла конфигурации, который все переменные проверят во всех проектах. Это может быть файл XML, файл CSV или даже простой текстовый файл. Если вы хотите усложнить задачу, вы можете указать местоположение базы данных, поскольку это одна из ролей базы данных.

...