Подтвердить что ты не робот

Ссылка Microsoft.VisualStudio.QualityTools.UnitTestFramework для сборки CI

Я создал тестовый проект С# в VS2015 RC. он создается локально, но когда я пытаюсь построить наш сервер сборки CI (TeamCity), он терпит неудачу с ошибками:

UnitTest1.cs(2,17): ошибка CS0234: имя типа или имени пространства имен "VisualStudio" не существует в пространстве имен "Microsoft" (вы отсутствует ссылка на сборку?) [D:\BuildAgent\работы\e486bf18e454d0c2\dh.PSP.Coordinator.Api.Tests\dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs(9,10): ошибка CS0246: имя типа или имени пространства имен "TestMethod" не найден (вам не хватает директивы using или ссылка на сборку?) [D:\BuildAgent\работы\e486bf18e454d0c2\dh.PSP.Coordinator.Api.Tests\dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs(9,10): ошибка CS0246: имя типа или имени пространства имен 'TestMethodAttribute' не найден (вам не хватает директива или ссылка на сборку?) [D:\BuildAgent\работы\e486bf18e454d0c2\dh.PSP.Coordinator.Api.Tests\dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs(6,6): ошибка CS0246: имя типа или имени пространства имен "TestClass" не найден (вам не хватает директивы using или ссылка на сборку?) [D:\BuildAgent\работы\e486bf18e454d0c2\dh.PSP.Coordinator.Api.Tests\dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs(6,6): ошибка CS0246: имя типа или имени пространства имен "TestClassAttribute" не найден (вам не хватает директива или ссылка на сборку?) [D:\BuildAgent\работа\e486bf18e454d0c2\dh.PSP.Coordinator.Api.Tests\dh.PSP.MetadataService.Api.Tests.csproj]

Ясно, что это связано с тем, что сборка, содержащая эти пространства имен (Microsoft.VisualStudio.QualityTools.UnitTestFramework), не находится на сервере сборки, на моем локальном компьютере она находится в папке C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll. Наверное, я мог бы скопировать сборку в мое решение, чтобы она стала частью кодовой базы, но файлы, перемещаемые вручную, выглядят как нечто вроде неэффективного взлома. Я искал вокруг nuget и нашел http://www.nuget.org/packages/Microsoft.VisualStudio.QualityTools.UnitTestFramework/, который, как я полагал, выполнит трюк, но установка этого пакета завершилась неудачно:

Install-Package: не удалось установить пакет 'Microsoft.VisualStudio.QualityTools.UnitTestFramework 11.0.50727.1'. Вы пытаетесь установить этот пакет в проект, целью которого является ".NETFramework, Version = v4.5.2", но пакет не содержит никаких ссылки на сборку или файлы содержимого, которые совместимы с этим рамки

Какой мой лучший способ решить это? Я удивлен, что создание тестового проекта в VS2015 автоматически не включает все зависимости, которые мне нужны, хотя, возможно, я наивна (я - что-то вроде неочищенной точки сетки).

4b9b3361

Ответ 1

Хм, у меня есть некоторые идеи, поэтому выберите тот, который наилучшим образом соответствует вашим потребностям.

  • Простым ответом следует отметить DLL, чтобы скопировать локальную папку и использовать такую ​​папку, как сборки в той же папке решения, и ссылки "Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll"
  • Установите Visual Studio на свой сервер сборки. Звучит орехи, но это ближе всего к "машине разработчика", которая у вас есть.
  • Установите DLL в GAC, поэтому вам не нужно беспокоиться об этом.
  • Исправить пакет NuGet (добавление ссылки для версии .NET Framework) и использовать его.
  • Снизьте версию .NET Framework, чтобы вы могли использовать пакет NuGet.
  • Создайте свой собственный сервер NuGet! (и добавьте ссылку на нужные DLL).

IMHO Я бы выбрал первый ответ, потому что, по-видимому, "лучший способ" использовать NuGet для решения всех проблем с вашими пакетами, но вы используете DLL, которая не знает, следует ли ей доверять.

В системе, используемой на "старых" языках, таких как C или С++, вы загружаете исходный код и библиотеки, необходимые для запуска кода, поэтому я не думаю, что пакет NuGet это лучшее решение.

Используя первый вариант, вы всегда имеете одну и ту же версию и можете проверить MD5 файла и точно знать, что работает на вашем сервере сборки.

Возможно, самый лучший вариант - 6. Когда вы используете свой собственный сервер NuGet для обработки ваших DLL файлов, что делает вашу живую более устрашающей и надежной.

Ответ 2

Ответ аналогичен варианту 1 в ответе eng.augusto.
Microsoft не предоставляет NuGet для последней версии Microsoft.VisualStudio.QualityTools.UnitTestFramework,  но поставьте его как часть Visual Studio (обычно в C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Я создал папку Microsoft.VisualStudio.QualityTools как подпапку моего решения и скопировал

Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll Microsoft.VisualStudio.QualityTools.UnitTestFramework.xml

Файлы должны быть добавлены в исходный элемент управления (даже если библиотеки DLL обычно игнорируются). Затем я изменил ссылки в моем Test.csproj, чтобы обратиться к новому местоположению.