Почему Reactive Extensions отправляет HTTP GET на microsoft ON COMPILATION?

Я загрузил Stable release Reactive Extensions v1.0 SP1 с этого сайта http://msdn.microsoft.com/en-us/data/gg577610, и я использую его в .Net Среда Framework 3.5 (Visual Studio 2008)

Я попытался использовать Reactive Extensions в проекте и заметил, что он очень медленно запускается. Подойдя к LinqPad, я ввел следующее выражение "С#":

(new int[0]).ToObservable()

Я также ссылался на System.Reactive.dll и импортировал пространство имен System.Reactive.Linq. Когда я запускаю его, для компиляции и запуска требуется 12 секунд.

Я открыл Process Monitor и отслеживал LinqPad. Я обнаружил, что отправляет HTTP-запрос на 124.155.222.226 ИЛИ 124.155.22.59. (Сам FYI LinqPad также поддерживает до 157.55.161.150 дома, когда вы его открываете). С помощью WireShark я заметил, что он отправляет HTTP-запрос GET на

http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl

Кто-нибудь знает, почему он звонит домой, как это, когда код компилируется с Reactive.Extensions? Кроме того, есть ли способ отключить его, потому что 12-секундная задержка на телефон дома, когда devoloping приложение (и работает в производстве) является особенно неудобным.

ПРИМЕЧАНИЕ. При подключении кода (или JIT компилирует его при отладке) он отправляется домой, как это происходит. Это, по-видимому, не поведение во время выполнения.

Ответ 1

Похоже, что сборка Rx подписана под Authenticode. IMO, это ошибка для сборников Authenticode-sign.NET, созданных для Framework 3.5 или более ранних версий, потому что CLR проверяет список отзыва сертификатов перед чтением сборки, задерживая вещи на несколько секунд в лучшем случае (или 30 секунд в худшем случае, если ваше интернет-соединение раз).

Эта ошибка была исправлена ​​в CLR 4: Подписи аутентичного кода проверяются только по требованию, а не каждый раз, когда вы загружаете сборку.

(По этой причине версия Framework 3.5 для исполняемого файла LINQPad не подписана с использованием Authenticode.)

Возможно, вы могли бы попросить команду Rx рассмотреть возможность удаления сигнатуры Authenticode из сборки 3.5 Reactive сборок (предполагая, что это действительно проблема).