2013-09-04 35 views
138

Trong giải pháp C#, tôi đã thêm dự án hiện có.
Sau đó, Visual Studio đã được thêm vào các mục sau đây trong các tập tin csproj khác:"Bao gồm dịch vụ" trong tệp csproj là gì?

<ItemGroup> 
    <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" /> 
</ItemGroup> 

này là cái gì?
Tôi có thể xóa nó không?

+0

Giải pháp được biên dịch thành công sau khi xóa - nhưng câu hỏi là: điều gì sẽ xảy ra khi chạy? Tôi phải biết nó làm gì. – joe

Trả lời

203

Tôi đã có một trường hợp tương tự, nơi này đã được bổ sung:

<ItemGroup> 
    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> 
</ItemGroup> 

bao gồm này hóa ra lại được tạo ra trên mục đích của VS2013 nếu bạn tạo một dự án thử nghiệm NUnit, nhưng quên để gắn thẻ nó như là dự án thử nghiệm, như được mô tả trong số này answer từ Microsoft:

Hành vi này là cố ý.

Để hỗ trợ các khuôn khổ thử nghiệm của bên thứ ba, như NUnit và XUnit, Visual Studio 2012 được tải Test Explorer khi mở giải pháp, bất kể nó có chứa các dự án thử nghiệm hay không. Điều này thêm giây chậm trễ để khởi động và giải pháp mở kịch bản cho tất cả người dùng, phần lớn trong số họ không sử dụng thử nghiệm.

Trong Visual Studio 2013, chúng tôi đã thay đổi nó để gói Test Explorer chỉ được tải khi giải pháp chứa một hoặc nhiều dự án thử nghiệm. Các dự án thử nghiệm được xác định theo hai cách khác nhau. Các dự án được tạo từ một trong các mẫu dự án thử nghiệm đơn vị được xây dựng sẵn được xác định bằng cách sử dụng các loại GUID dự án. Các loại dự án khác, chẳng hạn như dự án Thư viện lớp với các kiểm tra XUnit hoặc NUnit, được xác định bởi Test Explorer trong lần khám phá đầu tiên và “được gắn thẻ” với mục <Service/>.

+3

Nó vẫn hữu ích cho VS 15.3+? –

+4

@JaanusVarus Có, điều này vẫn xảy ra trong VS 15.4 (Tôi đã cố gắng để hiểu hành vi và dẫn tôi ở đây). Tôi không chắc chắn nếu quyết định hiệu suất nên được xem xét lại, nếu đó là câu hỏi của bạn. –

10

Điều tốt về GUID là chúng khá độc đáo và do đó rất dễ tìm kiếm trong Google. Tôi đã làm và tìm thấy: thisthis cũng như các lần truy cập thú vị khác.
Dường như đây thực sự là một lỗi đã biết trong công cụ DSL T4 đi kèm với SDK. Và may mắn thay nó đủ dễ dàng để giải quyết bằng cách thay đổi một số khóa registry.

+4

Và bây giờ khi tôi tìm kiếm nó, tôi nhận được câu hỏi SO ;-) này. – binki

+2

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/19034960) –

23

Cá nhân tôi không thích dịch vụ này được thêm vào tệp dự án của tôi và tôi cho rằng việc này giống như giải pháp thay vì giải pháp thích hợp. Vì vậy, đánh dấu dự án thử nghiệm của bạn như dự án thử nghiệm dường như chính xác hơn với tôi và điều này có thể đạt được bằng cách thêm này đến PropertyGroup đầu tiên:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 
<TestProjectType>UnitTest</TestProjectType> 

{3AC096D0-A1C2-E12C-1390-A8335801FDAB} nghĩa dự án thử nghiệm và {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C#. Đối với các loại dự án khác, hãy truy cập here

+7

^Tôi cũng thích 'ProjectTypeGuids' nhưng nếu bạn đang phát triển đa nền tảng và sử dụng MonoDevelop, bạn sẽ không thể mở dự án' {3AC096D0-A1C2-E12C-1390-A8335801FDAB} ': "Loại dự án này không phải là được MonoDevelop hỗ trợ ". Cả hai IDE có vẻ hạnh phúc nếu bạn chỉ cần loại bỏ các dự án thử nghiệm loại GUID. – WynandB

+2

Tôi tự hỏi các loại có thể khác cho là gì? Không thể tìm thấy bất kỳ thông tin nào về nó. –

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