2015-06-02 19 views
19

Tôi đã tạo một dự án thử nghiệm C# trong VS2015 RC. nó được xây dựng tại địa phương nhưng khi tôi cố gắng để xây dựng trên chúng tôi CI xây dựng máy chủ (TeamCity) nó không thành công với các lỗi:Tham khảo Microsoft.VisualStudio.QualityTools.UnitTestFramework để xây dựng CI

UnitTest1.cs (2,17): CS0234 lỗi: Loại hoặc namespace tên 'VisualStudio' không không tồn tại trong không gian tên 'Microsoft' (là bạn thiếu tham chiếu lắp ráp?) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api.Tests.csproj ] UnitTest1.cs (9,10): lỗi CS0246: Không thể tìm thấy loại hoặc không gian tên 'TestMethod' (bạn đang thiếu chỉ thị sử dụng hoặc tham chiếu lắp ráp?) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP .MetadataService.Api.Tests.csproj] UnitTest1.cs (9,10): lỗi CS0246: Không thể tìm thấy loại hoặc không gian tên 'TestMethodAttribute' (bạn có thiếu chỉ dẫn sử dụng hoặc tham chiếu lắp ráp không?) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs (6,6): lỗi CS0246: Tên loại hoặc không gian tên Không thể tìm thấy 'TestClass' (bạn có thiếu chỉ thị sử dụng hoặc tham chiếu lắp ráp không?) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api .Tests.csproj] UnitTest1.cs (6,6): lỗi CS0246: Tên kiểu hoặc không gian tên 'TestClassAttribute' không thể tìm thấy (bạn là missi ng một sử dụng chỉ thị hoặc tham khảo một hội) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api.Tests.csproj]?

Rõ ràng điều này là do lắp ráp có chứa các không gian tên (Microsoft.VisualStudio.QualityTools.UnitTestFramework) không có trên máy chủ xây dựng, trên máy cục bộ của tôi nó nằm tại C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PublicAssemblies \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll. Tôi đoán tôi có thể sao chép lắp ráp vào giải pháp của tôi để nó trở thành một phần của codebase nhưng các tập tin di chuyển bằng tay cảm thấy như một chút của một hack không thích hợp. Tôi đã tìm kiếm xung quanh trên NuGet và thấy http://www.nuget.org/packages/Microsoft.VisualStudio.QualityTools.UnitTestFramework/ mà tôi hình dung sẽ làm các trick, nhưng cài đặt gói phần mềm đó thất bại với:

Install-Package: Không thể cài đặt gói 'Microsoft.VisualStudio.QualityTools.UnitTestFramework 11.0.50727.1' . Bạn đang cố gắng để cài đặt gói này thành một dự án nhắm ' .NETFramework, Version = v4.5.2' , nhưng các gói không chứa bất kỳ tài liệu tham khảo lắp ráp hoặc các tập tin nội dung tương thích với điều đó khuôn khổ

Giải pháp tốt nhất của tôi là gì? Tôi ngạc nhiên rằng việc tạo ra một dự án thử nghiệm trong VS2015 không tự động bao gồm tất cả các phụ thuộc mà tôi cần, mặc dù có lẽ tôi đang ngây thơ (tôi là một cái gì đó của một netter dot non trẻ).

+3

Tại sao một người nào đó đánh dấu sự cố này? Đó là một câu hỏi hoàn toàn hợp lệ. Tôi là một nhà phát triển thiếu kinh nghiệm .net, sau khi dành một số thời gian đáng kể googling và không nhận được bất cứ nơi nào, đang tìm kiếm một số hướng dẫn như thế nào để tiến bộ. Có phải SO rất nhiệt tình đến nỗi tôi không được phép làm điều đó? Nghiêm túc? – jamiet

+0

@jaimiet Tôi đã có cùng một vấn đề, trên TeamCity Agent của bạn là bạn xây dựng theo Mono trên Linux? Mono không cung cấp thư viện đó như là một phần của phân phối của nó. Nếu đó là .NET dưới Windows, bạn có một vài tùy chọn để thực hiện nó. – TylerY86

Trả lời

2

Hmm tôi có một số ý tưởng, nên chọn một trong đó phù hợp nhất với nhu cầu của bạn

  1. Một câu trả lời đơn giản nên được đánh dấu DLL để sao chép địa phương và sử dụng một thư mục như Assemblies trong cùng một thư mục của giải pháp và tham khảo "Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll"
  2. Cài đặt Visual Studio trong xây dựng máy chủ của bạn. Âm thanh các loại hạt nhưng đó là để gần gũi nhất 'máy phát triển' mà bạn có.
  3. Cài đặt DLL in the GAC vì vậy bạn không cần phải bận tâm với điều này.
  4. Vá Gói NuGet (Thêm tham chiếu cho phiên bản .NET Framework) và sử dụng nó
  5. Hạ cấp phiên bản .NET Framework của bạn để bạn có thể sử dụng gói NuGet
  6. Tạo máy chủ NuGet của riêng bạn! (Và thêm tham chiếu của DLL bạn cần)

IMHO Tôi chọn câu trả lời đầu tiên, bởi vì nó có vẻ là "cách tốt nhất" để sử dụng NuGet để giải quyết tất cả các vấn đề gói của bạn nhưng bạn đang sử dụng một DLL mà bạn không biết nếu nó đáng tin cậy.

Trong hệ thống được sử dụng trong ngôn ngữ "cũ" như C, hoặc C++, bạn thường tải xuống mã nguồn và thư viện cần để chạy mã vì vậy tôi không nghĩ gói NuGet là giải pháp tốt nhất.

Sử dụng tùy chọn đầu tiên bạn luôn có cùng phiên bản và có thể kiểm tra MD5 của tệp và biết chính xác những gì đang chạy trong máy chủ xây dựng của bạn.

Có lẽ tùy chọn thực sự tốt nhất nên là 6. Khi bạn sử dụng máy chủ NuGet của riêng mình để xử lý các tệp DLL làm cho cuộc sống của bạn trở nên tuyệt vời và đáng tin cậy hơn.

+2

Hoặc bạn tránh tất cả những kinh dị bằng cách sử dụng xunit, nunit ... bất cứ điều gì không phải từ microsoft. – Sam

+0

Tôi đã gặp vấn đề này trong một vài dự án mà tôi sở hữu thực sự sử dụng NUnit nhưng một số tham chiếu đến cùng với một số dự án thử nghiệm. Tôi đã không nhận ra cho đến khi tôi thả chúng vào hệ thống TeamCity của chúng tôi. –

2

Câu trả lời tương tự như tùy chọn 1 trong số eng.augusto's answer.
Microsoft không cung cấp NuGet cho phiên bản mới nhất của Microsoft.VisualStudio.QualityTools.UnitTestFramework, nhưng cung cấp cho nó như một phần của Visual Studio (normally at C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ PublicAssemblies \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

tôi tạo ra các Microsoft.VisualStudio.QualityTools thư mục như một thư mục con của tôi, giải pháp và sao chép

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

Các tệp cần được thêm vào điều khiển nguồn (ngay cả khi các tệp DLL thường bị bỏ qua).
Sau đó, tôi đã thay đổi các tham chiếu trong Test.csproj của tôi để tham khảo một vị trí mới.

+0

Điều đó không đúng. Xem câu trả lời của tôi. – notlkk

+0

@notlkk: Câu trả lời của bạn ở đâu?Tôi đã thấy nó, nhưng bây giờ nó biến mất. –

0

Đối với các dự án được tạo trong VS 2017. Thêm gói Nuget Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated cho phép xây dựng các dự án thử nghiệm đơn vị trên CI mà không cần cài đặt VS trên máy chủ xây dựng.

Các vấn đề liên quan