2009-07-15 2 views
4

Здесь я прочитал много вопросов (и ответов), в которых у них были похожие условия звучания, но все они оказались в построении против разных основных версий .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)?

Если вышеприведенные вопросы не имеют положительного ответа, я все для поиска альтернатив.

спасибо.

ответ

1

Нельзя было повлиять на обновление до SP2, если вы не использовали новые API. Точно, какие неудачи вы видели на машине сборки?

Я согласен, кстати, что они не должны были добавлять ничего, не меняя второстепенный оборот. Это было для Vista, но они потеряли голову.

думаю.

+0

Проблема заключается в том, что разработчики (особенно новые или некоторые, которые переносят код из других проектов) имеют тенденцию вводить несовместимые вызовы API. Сейчас он полностью прозрачен для разработчика, и нет никакого способа поймать себя, не создавая черный список, и разработчики постоянно проверяют его, когда они что-то добавляют. –

+0

Несомненно, если вы обнаружите, что вам нужно обновить SP своей структуры, тогда имеет смысл заставить ваших клиентов последовать этому примеру, иначе вы разрабатываете известную ошибочную платформу. Тем не менее, не каждая платформа испорчена? ;) – Lazarus

+0

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

1

У меня run into this problem with 3.5 SP1; к сожалению, нет простого решения. Единственное решение - либо 1) надеяться, что изменения от пакетов обновлений не повлияют на вас - иногда они это делают, иногда они этого не делают - или 2) создают отдельные машины сборки, каждая из которых имеет только соответствующий пакет обновления, и строите там.

+0

Проверяя вашу ссылку, я считаю, что это было потому, что вы использовали AJAX Control Toolkit, который вы перестроили с 3.5 SP1, это правильно? Вы сообщили об этом как об ошибке в Connect (http://connect.microsoft.com/visualstudio/). Я знаю, что это было сообщено на Codeplex, но Connect относится к группе продуктов, кому нужно объяснить, почему бы не изменить иерархию наследования в SP. –

+0

Нет, это произошло из другой части моего кода; Я только что опубликовал решение проблемы в отчете об ошибке AJAX Control Toolkit. Что касается сообщения об этом Microsoft ... если я сообщаю об этом как об ошибке, возможно, они обратят на нее внимание на будущие выпуски, но ущерб будет нанесен. – Randolpho

 Смежные вопросы

  • Нет связанных вопросов^_^