Как MS Studio 2010 определяет версию сборки (sln-файла)?

программирование программы софт .net Visual studio

Проблема в следующем: надо автоматически конвертировать сборки (sln) из 2005 студии в 2008 и 2010 студии при сборке проекта.
Задача решается кодом типа:
if (s.Contains("Format Version 10.00"))
s = s.Replace("Version 10.00", "Version 11.00");
if (s.Contains("Visual Studio 2008"))
s = s.Replace("2008", "2010");
Но файлы sln рисуются синими значками без "10" и ничего не открывается при клике на них.
В то время как sln, созданные студией 2005, 2008 или 2010 рисуются с "8", "9" и "10" на значке соответственно и все открывается отлично.
Ответы:
Подход в целом правильный (не уверен насчет 2005, потому что приведенный код конвертирует только из 2008->2010). Скорее всего дело в коде который вы здесь не привели, а точнее сохранение результата в файл. Если вы смотрели любой корректный sln файл в редакторе поддерживающем hex представление, вы наверняка заметили что в начале идут 5 байт: EF BB BF 0D 0A. Это т.н. byte order mark (в данном случае означающий, что файл закодирован в utf8) + 2 байта CR+LF. Могу предположить что при сохранении часть этих байтов теряется, поскольку именно в этом случае происходит описываемая вами ситуация - Visual Studio Version Selector не может распознать ваш sln как корректный и выводит иконку по умолчанию.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.