2015-06-02 3 views
19

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

UnitTest1.cs (2,17): CS0234 об ошибке: тип или пространство имен имя «VisualStudio» делает не существует в пространстве имен «Microsoft» (есть ли у вас отсутствует ссылка на сборку?) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api.Tests.csproj ] UnitTest1.cs (9,10): ошибка CS0246: имя типа или пространства имен «TestMethod» не найден (вам не указана директива using или ссылка на сборку?) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP .MetadataService.Api.Tests.csproj] UnitTest1.cs (9,10): ошибка CS0246: имя типа или пространства имен 'TestMethodAttribute' не удалось найти (вам не хватает указателя или ссылки на сборку?) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs (6,6): ошибка CS0246: имя типа или пространства имен «TestClass» не найден (вам не указана директива using или ссылка на сборку?) [D: \ BuildAgent \ work \ 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 автоматически не включает все зависимости, которые мне нужны, хотя, возможно, я наивна (я - нечто похожее на нетривиальную точку).

+3

Почему бы кому-то это не отметить? Это совершенно правильный вопрос. Я неопытный разработчик .net, который, потратив некоторое время на поиски в Google и не получая нигде, ищет некоторые рекомендации относительно того, как продвигаться. Так ли так элитарно, что мне не разрешено это делать? Шутки в сторону? – jamiet

+0

@jaimiet У меня была такая же проблема, на вашем агенте TeamCity вы строите под Mono на Linux? Mono не предоставляет эту библиотеку как часть ее распространения. Если это .NET под Windows, у вас есть несколько вариантов получения его на месте. – TylerY86

ответ

2

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

  1. Простой ответ должен быть пометить DLL для копирования локального и использовать папку, как Ассамблей в той же папке решения и «Microsoft.VisualStudio.QualityTools.UnitTestFramework.длл»
  2. Установка Visual Studio на сервере сборки. Звуки гайки, но это ближе всего к„разработчик машины“, что у вас есть.
  3. Установите DLL in the GAC так что вам не придется возиться с этим.
  4. Закрепить Пакет NuGet (добавление ссылки для версии .NET Framework).
  5. Обновите версию .NET Framework, чтобы вы могли использовать пакет NuGet.
  6. Создайте свой собственный сервер NuGet! (И добавьте ссылку на DLL, которые вам нужны).

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

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

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

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

+2

Или вы избегаете всего этого ужаса, используя xunit, nunit ... ничего не от Microsoft. – Sam

+0

Я столкнулся с этой проблемой в нескольких проектах, которые у меня есть, которые фактически используют NUnit, но некоторые ссылки пришли вместе с некоторыми из тестовых проектов. Я не понимал, пока не бросил их в нашу систему TeamCity. –

2

Ответ аналогичен варианту 1 в eng.augusto's answer.
Microsoft не предоставляет NuGet для последней версии Microsoft.VisualStudio.QualityTools.UnitTestFramework, , но поставить его как часть Visual Studio (normally at 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, чтобы обратиться к новому местоположению.

+0

Это неправда. См. Мой ответ. – notlkk

+0

@notlkk: Где твой ответ?Я видел это, но теперь он исчез. –

0

Для проектов, созданных в VS 2017. Добавление пакета Nuget Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated позволяет строить проекты единичных тестов на CI без VS, установленных на сервере сборки.

 Смежные вопросы

  • Нет связанных вопросов^_^