2011-02-07 24 views
19

Tôi muốn chạy vùng phủ sóng từ dòng lệnh, nhưng dường như không thể có được NCover 1.5.8 để thiết lập mã. Nó phải có thể như khi tôi chạy thử nghiệm bảo hiểm với TestDriven.net nó hoạt động. sự khác biệt dường như là TD.NET có thể nhận NCover để sử dụng framework 4.0 (bạn nhận được điều này trong nhật ký khi nó chạy: MESSAGE: v4.0.30319) nhưng từ dòng lệnh tôi không thể làm cho nó (tôi nhận được điều này trong nhật ký: MESSAGE: v2.0.50727)Force NCover 1.5.8 để sử dụng khung công tác v4 như testdriven.net?

Vậy làm cách nào để NCover có thể chơi tốt với nunit từ dòng lệnh, giống như nó với TD.NET?

Trả lời

27

sau lần tìm kiếm hơn Tôi thấy điều này:

If you have found this thread because you are trying to get NCover 1.5.8 to work with .NET 4 then the following should fix this error:

Open a command prompt and type the following set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler

This instructs the .NET 4 CLR to load the .NET Framework 2.0 Profiler.

For more information see: http://msdn.microsoft.com/en-us/library/dd778910.aspx

ở phần cuối của sợi here

mà dường như để giải quyết vấn đề của tôi

EDIT:

nó doesn' t giải quyết vấn đề của tôi thực sự. Bây giờ nó chỉ cho phép tệp coverage.xml được tạo ra, nhưng nó chỉ chứa các khung công tác khuôn khổ v2.0, do đó chỉ có các hội đồng .net 2.0 được lược tả ....

Grrr. trở lại bàn vẽ ...

EDIT 2

Hallelujah! Tôi đã tìm ra điều này bằng một quá trình googling ngẫu nhiên và thay đổi. anyway, do một số con trỏ tìm thấy here Tôi đã có thể tìm ra rằng những gì tôi cần làm là để thay đổi exe.config của ứng dụng đang chạy mã (nunit.console-x86.exe trong trường hợp này) tập tin để không chỉ lực lượng một phiên bản cụ thể của khung .net sẽ được tải mà còn để cho phép sử dụng chính sách kích hoạt kế thừa. Để cắt một đoạn ngắn câu chuyện dài tôi đã có thể giải quyết điều này bằng cách:

  • Thêm vào nunit-console-x86.exe.config phần sau:
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0.30319"/> 
    </startup> 
</configuration> 
  • thiết lập những trong môi trường mà lệnh được khởi chạy từ:

    set ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
    set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
    (không chắc chắn cả hai đều là cần thiết, nhưng đó là những gì tôi đã làm)

Tôi cũng đã thêm một thiết lập tương tự như NCover.Console.Exe.config, nhưng nó quay ra đó là không cần thiết.

EDIT 3

đây là dòng lệnh Tôi đang sử dụng (lưu ý rằng tôi sao chép tất cả các NCover và nunit và lắp ráp thử nghiệm của tôi vào một thư mục để đơn giản hóa mọi thứ)

NCover.Console.exe nunit-console-x86.exe /framework=4.0.30319 Your.Test.Assembly.dll //x coverage.xml //reg

+0

bạn có thể vui lòng hiển thị toàn bộ dòng lệnh bạn đang sử dụng không? Tôi đang cố gắng để làm theo điều này nhưng không nhận được ncover 1.5.8 để cấu hình mã 4.0 của tôi. Tôi quyết định bỏ Gallio và đi đơn giản gọi ncover.console từ dòng lệnh và chạy nó các bài kiểm tra nunit của tôi với bảo hiểm ... nhưng tôi không thể đi đâu cả. Tôi đã dành khoảng sáu giờ về điều này rồi và nó thật khủng khiếp ... –

+0

@Peter đã cập nhật câu trả lời. –

+0

cảm ơn, sẽ cố gắng trở lại thực sự khó khăn. tôi không thể tin được việc thiết lập khó khăn như thế nào ... –

4

Tôi có thể đã hiểu lầm vấn đề của bạn, nhưng nếu bạn đang cố gắng để buộc NCover chạy trong thời gian chạy .NET 4.0 bạn có thể thử đặt phần tử supportedRuntime trong tệp cấu hình của nó.

<configuration> 
    <startup> 
    <supportedRuntime version="v4.0.30319"></supportedRuntime> 
    </startup> 
</configuration> 

Điều này sẽ buộc .NET 4.0 khi thực thi mà không cần phải tạo lại.

+0

nhờ . Tôi đã thử điều này, nhưng trong khi điều này chạy ncover và ncover chạy nunit nó dường như không thể kết nối profiler, và ncover chỉ treo và tôi nhận được 'Profiled quá trình chấm dứt. Kết nối Profiler không được thiết lập.' sau khi các bài kiểm tra nunit được chạy và các bản ghi và tệp bảo hiểm không được cập nhật ... –

+0

Tôi đã bỏ phiếu này vì nó đã đi đúng hướng và cuối cùng là hữu ích. câu trả lời đã làm cho NUnit chạy trong thời gian chạy .NET 4.0 và cũng thêm thuộc tính 'useLegacyV2RuntimeActivationPolicy =" true "' vào phần tử 'startup' trong tệp cấu hình. Xem câu trả lời của tôi dưới đây. cảm ơn sự giúp đỡ của bạn. –

+0

Cảm ơn những lời khuyên, nocver ​​cuối cùng chạy nhưng phạm vi bảo hiểm được tạo ra là 0% đó là sai. Tôi đang sử dụng .net 4.5.2 và nunit 2.6.3 Bất kỳ ý tưởng ?? – user448070