Выбор пакета обновления .Net Framework для сборки - PullRequest
4 голосов
/ 16 июля 2009

Я прочитал много вопросов (и ответов) здесь, в которых звучали те же термины, что и в этом вопросе, но все они заканчивались тем, что строили против разных основных версий .Net. К сожалению, у меня гораздо более глубокие проблемы.

Вот история. Наши клиенты используют версию 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)?

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 июля 2009

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

1 голос
/ 16 июля 2009

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

Я согласен, кстати, что они не должны были ничего добавлять, не изменяя младшую версию. Впрочем, это было для Vista, и они потеряли голову.

Я думаю.

...