0

Обычай строить активность зависит от следующих TFS сборок:Как скомпилировать Build Activity таким образом, чтобы он работал с TFS 2010, TFS 2012 и TFS 2013?

Microsoft.TeamFoundation.Build.Client.dll 
Microsoft.TeamFoundation.Build.Workflow.dll 
Microsoft.TeamFoundation.VersionControl.Client.dll 

Цель состоит в том, чтобы собрать его таким образом, что он будет работать на TFS 2010, TFS 2012 и TFS 2013 без необходимости вручную указать обязательные переназначения для всех возможных машин агента сборки, в которых может быть активирована операция.

Поставка файла конфигурации вместе с действиями и создание домена приложения, использующего перенаправления привязки, указанные в этом файле конфигурации, похоже на вариант, но в конечном итоге это не сработает, поскольку «Microsoft.TeamFoundation.Build.Client. BuildActivity ", что действие должно быть украшено *, будет считываться вызывающим кодом до того, как код в сборке пользовательской активности будет выполнен - ​​и если версия сборки TFS, из которой был получен этот атрибут, не соответствует версии TFS сборка, загруженная в память, активна так же хорошо, как если бы она не была украшена этим атрибутом вообще.

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

Удаления всех ссылок на деятельность TFS и загрузку TFS, связанные с типы, использующие отражение, также кажутся еще одним вариантом, но сбой по той же причине, поскольку, очевидно, атрибут BuildActivity не может быть отраженно применен к классу до того, как код внутри самого класса вызывается внешним кодом.

С тех пор, как несколько типов и методов TFS зависят от существующих в сборках TFS 2010, TFS 2012 и TFS 2013, и поскольку деятельность скомпилирована против .NET 4.0, единственное разумное обходное решение, о котором я могу думать, - создать 3 отдельные сборки: один скомпилирован против сборок TFS/VS 2010 (10.0.0.0), один скомпилирован с сборками TFS/VS 2012 (11.0.0.0) и один скомпилирован против сборок TFS/VS 2013 (12.0.0.0).

(И, конечно, хотя у меня есть версии вышеупомянутых сборок TFS2010/TFS2013 на моей машине разработки, предполагается, что агенты Build будут иметь только версию этих сборок, которая поставляется с его версией TFS .)

Другое обходное решение похоже на указание переадресации перенаправления для всех машин агента сборки, но с довольно большим количеством машин агента сборки это невозможно.

Есть ли реальное решение этой проблемы, или я застрял, чтобы создать 3 сборки?

ответ

0

если вы идете вниз по пути с 3 узлов, технически можно создать 3 BuildProcessAssemblies папки и добавьте

Microsoft.TeamFoundation.Build.Client.dll

Microsoft.TeamFoundation.Build. Workflow.dll

Microsoft.TeamFoundation.VersionControl.Client.dll

библиотеки еа ch, затем укажите каждый конкретный контроллер в соответствующую папку.