Здесь я прочитал много вопросов (и ответов), в которых у них были похожие условия звучания, но все они оказались в построении против разных основных версий .Net. К сожалению, я испытываю гораздо более глубокие проблемы.Выбор пакета обновления .Net Framework для построения против
Вот история. Наши клиенты используют версию 2.0 .Net framework. Только 2.0, никаких пакетов обновлений вообще. Наши разработчики использовали .NET 2.0 SP1, который отлично работал. Теперь, благодаря другим проектам, над которыми мы работаем, разработчики (включая меня) были обновлены до .Net 2.0 SP2. И тут начались неприятности. По-видимому, в своей бесконечной мудрости MS решила изменить/добавить API в фреймворк без увеличения основной версии (до, скажем, 2.1). Поэтому, когда вы создаете против 2.0, он строит против 2.0 SP2 (если вы его установили), и, похоже, не существует способа его настройки. Поэтому разработчик теперь может писать код, думая, что он нацелен на 2.0, но он не будет работать на машинах клиента!
Мы заметили, что некоторые сборки (выполненные с использованием msbuild) начали сбой в наших тестовых окнах, но отлично работают на машинах разработчиков. Очевидно, потому что тестовый ящик настроен так, как работают клиентские машины, а в их старой структуре отсутствуют некоторые из API. Теперь ферма сборки собирается установить более новую версию CLR (включая пакеты spervice и более высокие основные версии) для тестирования всех наших проектов, поэтому сборки, использующие API, которые не находятся в оригинальном 2.0, больше не будут терпеть неудачу ... это это ужасная новость для тестирования совместимости.
Так что мой вопрос в этом. Как построить (используя msbuild) для конкретной версии CLR (той же основной версии). В противном случае, как убедиться, что VS2005 выдает ошибку, когда конкретный проект использует функции, несовместимые с конкретным пересмотром CLR (чтобы вытащить ключ в винты, без FxCop или аналогичную интеграцию, только базовые функции VS2005)?
Если вышеприведенные вопросы не имеют положительного ответа, я все для поиска альтернатив.
спасибо.
Проблема заключается в том, что разработчики (особенно новые или некоторые, которые переносят код из других проектов) имеют тенденцию вводить несовместимые вызовы API. Сейчас он полностью прозрачен для разработчика, и нет никакого способа поймать себя, не создавая черный список, и разработчики постоянно проверяют его, когда они что-то добавляют. –
Несомненно, если вы обнаружите, что вам нужно обновить SP своей структуры, тогда имеет смысл заставить ваших клиентов последовать этому примеру, иначе вы разрабатываете известную ошибочную платформу. Тем не менее, не каждая платформа испорчена? ;) – Lazarus
В конце концов, обновления бесплатны (и да, я согласен с тем, что есть расходы, связанные с выполнением обновления (если у вас нет решения для развертывания для вашей инфраструктуры). Кроме того, если рабочие станции не получили этого обновить то, что еще они не получили, и сколько дополнительного времени поддержки тратится впустую, поддерживая известные неисправные среды.Вернуться к моему первому комментарию еще раз;) – Lazarus