Я большую часть своего времени занимаюсь разработкой элементов управления как для WPF, так и для Silverlight с использованием той же кодовой базы. Для этого я добавляю существующие файлы из одного проекта (например, Silverlight) "как ссылки" на другой (скажем, WPF). Для незначительных различий я использую директивы препроцессора, например
#if SILVERLIGHT
...
#else
...
#endif
Код в этих блоках неактивен в зависимости от типа проекта, из которого вы открыли файл. Поэтому, если вы откроете свой файл из проекта Silverlight (где SILVERLIGHT определен), часть else будет серой, а Intellisense не будет работать в ней.
Чтобы часть WPF обрабатывалась IDE (с поддержкой раскраски и поддержкой Intellisense), вам нужно открыть файл из проекта WPF. Когда вы попытаетесь сделать это, вы получите окно с сообщением, что "Этот документ открывается другим проектом" , и когда вы нажимаете "ОК", он отображает этот файл в контексте проекта Silverlight (не то, что я хотел видеть). Поэтому мне нужно закрыть файл, снова перейти к проекту WPF и снова открыть файл. Это очень, очень раздражает.
Итак, вопрос заключается в следующем: существует ли какая-то настройка или надстройка, которая заставит Visual Studio повторно открыть файл из проекта, где я дважды щелкнул по нему, вместо того, чтобы показывать это глупое окно сообщения и показывая мне этот файл из "неправильный" проект?