Пользовательские приложения C#, которые обращаются к TFS

Мы создали специальное приложение для внутреннего использования, которое обращается к TFS. Для этого мы используем библиотеки Microsoft (например, Microsoft.TeamFoundation.dll).

Когда это приложение развернуто на ПК, на которых уже установлен Team Explorer или VS, все в порядке. Когда он развертывается на ПК, на которых он не установлен, он терпит неудачу.

Мы включаем все необходимые библиотеки DLL, но получаем ошибку «Обнаружена общеязыковая среда выполнения и недопустимая программа». Ошибка возникает на умеренно безобидной строке:

TeamFoundationServer myServer = new TeamFoundationServer(“ourserver.ourdomain.com”);

Интересно, что популярный инструмент TFSAdmin (когда вы добавляете необходимые библиотеки DLL в каталог exe) дает ту же ошибку.

Я также отмечаю, что многие другие пользовательские приложения имеют доступ к TFS (например, http://hinshelwood.com/tfsstickybuddy.aspx) также требуют, чтобы Team Explorer или VS были установлены для работы.

Ясно, что DLL недостаточно, и при этих установках происходит какое-то волшебство. Кто-нибудь знает, что это? Кто-нибудь знает, как заставить волшебство произойти?


person Handleman    schedule 30.09.2008    source источник
comment
Вы уверены, что клиентские сборки TFS не имеют внешних зависимостей, которые не включены, или они не заблокированы системой безопасности Windows?   -  person Aaron Powell    schedule 30.09.2008


Ответы (2)


«Официально поддерживаемый» способ написания приложения, использующего объектную модель TFS, заключается в установке Team Explorer на компьютере. Это особенно важно для целей обслуживания, т. е. для обеспечения того, чтобы при применении пакета обновлений для VSTS к клиентскому компьютеру API TFS также обновлялся. Права на перераспределение API TFS отсутствуют, поэтому они не должны поставляться с вашим приложением.

BTW. Также обратите внимание, что если вы пишете приложение, которое использует OM TFS, обязательно скомпилируйте его только как «X86», а не как «Any CPU». Все сборки TFS API помечены как X86, но если ваше приложение помечено как «Любой процессор», то на компьютере с архитектурой x64 оно будет загружено 64-битной CLR, но когда придет время для динамической загрузки сборок TFS, произойдет сбой.

Удачи,

Мартин.

person Martin Woodward    schedule 30.09.2008
comment
Обратите внимание, что код, использующий объектную модель TFS 2010, больше не нужно компилировать как X86, поскольку API 2010 теперь работает с обеими версиями CLR. - person Martin Woodward; 26.03.2010

Попробуйте этот список:

http://geekswithblogs.net/jjulian/archive/2007/06/14/113228.aspx

А также пытается поместить их в GAC. Это может быть проблема доверия безопасности — сборкам в GAC предоставляется более высокий уровень CAS.

person Cory Foy    schedule 30.09.2008