[Обновлено 05.11.2011: удалена устаревшая информация о торговой площадке. Спасибо за обновленную информацию @johnforrest]
Чтобы сделать то, что описывает Шон, возьмите существующее решение с существующими проектами 7.0. Добавьте папку решения и назовите ее «7.0». Переместите существующие проекты 7.0 в эту папку решения. Создайте другую папку решения с именем «7.1». Для каждого проекта в папке решения 7.0 создайте новый соответствующий проект в папке решения 7.1. Это Шони PhonyTools.7.1 и так далее. Теперь следуйте его указаниям по заполнению проектов 7.1 связанными файлами, которые связаны с проектами 7.0.
Я считаю связанные файлы благословением и проклятием. Если вы откроете связанный файл в одном проекте и отредактируете его, Visual Studio не всегда будет знать, что другой проект, содержащий связанный файл, необходимо перестроить. В последнее время я обнаружил, что если я не забуду открыть связанный файл в другом проекте, я получу предупреждение о том, что файл открыт в другом проекте, но VS обнаружит, что файл изменился, и перестроит другой проект. .
Директивы препроцессора, предложенные @KevinDTimm, сами по себе не решают проблему, поскольку вам все еще нужны два разных проекта для проектов двух разных типов (приложения или библиотеки 7.0 и 7.1). Кроме того, разные версии приложений будут ссылаться на разные соответствующие версии сборок.
Наконец, пока мы обсуждаем условную компиляцию, не забывайте атрибут Conditional , который часто является гораздо лучшим решением, чем использование директив препроцессора. Билл Вагнер дает хорошее описание достоинств атрибута [Условный] в Effective C #, 2-е изд., Пункт 4, с. 20. Наслаждайтесь!