Почему System.Threading.dll отсутствует в Windows \ Assembly? - PullRequest
7 голосов
/ 04 августа 2010

У меня есть различные версии .NET Framework (версии 1.1 - 4.0), установленные на удаленной машине с XP Professional. Я установил Reactive Extension для хорошей меры.

У меня также есть приложение, которое работает на моей машине, потому что оно ссылается на System.Threading, найденный здесь: C: \ Program Files \ Microsoft Reactive Extensions \ redist \ desktopV2 \ System.Threading.dll

У меня также есть две версии DLL в GAC.

Два вопроса:

i) Почему Visual Studio решила, что это версия (экземпляр), на которую следует ссылаться, когда я выбираю из списка, а не просматривая файл?

ii) Почему System.Threading не существует на удаленном компьютере? (Я думал, что это была основная часть Framework)

Спасибо

Ответы [ 2 ]

10 голосов
/ 04 августа 2010

System.Threading.dll был добавлен в .NET 4.0 (хотя пространство имен System.Threading существует с v1).Rx включает в себя версию System.Threading.dll, которая была перенесена в .NET 3.5 SP1.

Похоже, вы нацеливаетесь на .NET 3.5.В этом случае среда выполнения не загружает только System.Threading.dll версии 4.0 (очевидно).Ваша загрузка потерпит неудачу, если вы не включите Rx-версию System.Threading.dll вместе с вашей программой.

Чтобы ответить на вопросы напрямую:

  1. Rx регистрирует свои собственные частные каталоги в качестве платформырасширения.Вот как он обнаруживается VS.
  2. System.Threading.dll включен только в .NET 4.0, поэтому, если вы ориентируетесь на более раннюю платформу, он не будет найден.

Чтобы решить вашу проблему, выберите целевую программу .NET 4.0 или включите файл Rx System.Threading.dll вместе с вашей программой.

PS Я рекомендую обновить его до последней версии Rx.Папка desktopV2 не использовалась в последние несколько выпусков.При обновлении сначала удалите старую версию - так будет лучше.

0 голосов
/ 04 августа 2010

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

ii) System.Threading существовал начиная с фреймворка 1 , и, если он отсутствует на машине, он должен быть незарегистрирован или удален.

Я не знаю Reactive Extensions, и после некоторого поиска я не могу найти много информации, удаляет ли он System.Threading.dll

...