Как разделить свойства между несколькими проектами Visual Studio? (особенно проекты на C#)

Хранение свойств нескольких проектов Visual Studio вручную в синхронизации является раздражающим. Итак, как вы можете поделиться свойствами между несколькими проектами?

Редактировать: я имею в виду свойства, такие как условные символы компиляции, обработка предупреждений и ошибок и т. Д., Т. Е. Вещи, которые можно настроить на вкладках "Проект" -> "Свойства" или путем редактирования XML-файла проекта.

Подобные вопросы уже задавались ранее, см. 1, 2 и 3. Однако, в моем понимании, ответы были специфичными для C++. Я ищу ответ для проектов C#. Тем не менее, не стесняйтесь отвечать за другие виды проектов (Visual Basic и т. Д.), Если вы оставите разделение четким, потому что кто-то, кроме меня, может быть заинтересован.

В этом посте предлагается решение проблемы, но я бы предпочел что-то попроще.

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

Создайте файл AssemblyInfo.cs с атрибутами сборки, которыми вы хотите поделиться. Ссылка на этот существующий элемент в отдельных проектах. Используйте оригинальный (локальный) AssemblyInfo.cs и поместите туда специфичные для проекта атрибуты сборки. К сожалению, переопределение атрибутов, похоже, не работает, и управление атрибутами через графический интерфейс в настоящее время ограничено.

2 ответа

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

Например, предположим, что у меня есть одно и то же приложение в веб-форме и на рабочем столе. Такие вещи, как строки подключения и тому подобное, должны быть одинаковыми для обоих. Поэтому я создам три проекта:
MyProject.Web (веб-приложение)
MyProject.Desktop (приложение для форм Windows)
MyProject.Common (библиотека классов)
Затем я добавляю новый статический класс в Common с именем Properties со статическим свойством ConnectionString, который возвращает строку подключения.
Затем я добавляю ссылку на Common в Web и на рабочем столе, и когда я хочу получить доступ к строке подключения из любого из них, я использую Common.Properties.ConnectionString.

Мы очень интенсивно используем файлы.vsprops для совместного использования макросов, определенных между нашими собственными проектами.

Кто-то задает тот же вопрос, что и вы, и предложил добавить в решение "пустой" визуальный проект C++, чтобы можно было импортировать файл vsprops, а свойства были бы в целом видимы для остальной части решения. Если это не звучит слишком грубо, я могу узнать, как это получилось.

Другие вопросы по тегам