Мы создали специальное приложение для внутреннего использования, которое обращается к TFS. Для этого мы используем библиотеки Microsoft (например, Microsoft.TeamFoundation.dll).
Когда это приложение развертывается на ПК, на которых уже установлен Team Explorer или VS, все в порядке. При развертывании на компьютерах, на которых он не установлен, происходит сбой.
Мы включаем все необходимые библиотеки DLL, но получаем ошибку «Обнаружена среда CLR и недопустимая программа». Ошибка возникает в умеренно безобидной строке:
TeamFoundationServer myServer = new TeamFoundationServer(“ourserver.ourdomain.com”);
Интересно, что популярный инструмент TFSAdmin (когда вы помещаете необходимые библиотеки DLL в каталог exe) выдает ту же ошибку.
Я также отмечаю, что многие другие пользовательские приложения, которые обращаются к TFS (например, http://hinshelwood.com/tfsstickybuddy.aspx), также требуют установки Team Explorer или VS для работы.
Очевидно, что библиотек DLL недостаточно, и при их установке происходит некое волшебство. Кто-нибудь знает, что это? Кто-нибудь знает, как сделать волшебство?





Попробуйте этот список:
http://geekswithblogs.net/jjulian/archive/2007/06/14/113228.aspx
А также пытаюсь поместить их в GAC. Это может быть проблема с безопасностью - сборки в GAC получают более высокий уровень CAS.
«Официально поддерживаемый» способ написания приложения, использующего объектную модель TFS, - это установка Team Explorer на машине. Это особенно важно для целей обслуживания, т. Е. Для обеспечения того, чтобы при применении пакета обновления для VSTS к клиентскому компьютеру обновлялись и API TFS. У API TFS нет прав на повторное распространение, поэтому они не должны поставляться с вашим приложением.
Кстати - также обратите внимание, что если вы пишете приложение, использующее TFS OM, обязательно скомпилируйте его только как «X86», а не как «Any CPU». Все сборки TFS API помечены как X86, но если ваше приложение помечено как «Any CPU», то на машине x64 оно будет загружено 64-битной средой CLR, но когда придет время динамически загрузить сборки TFS, произойдет сбой.
Удачи,
Мартин.
Обратите внимание, что код, использующий объектную модель TFS 2010, больше не нужно компилировать как X86, поскольку API 2010 теперь работает с обеими версиями CLR.
Вы уверены, что клиентские сборки TFS не имеют внешних зависимостей, которые не включены, или они не заблокированы системой безопасности Windows?