2010-04-22 26 views
35

Tôi đã cố gắng sử dụng svcutil.exe để tạo các lớp proxy cho một dịch vụ nhưng khi tôi sử dụng tùy chọn /reference để tham chiếu một assembly được xây dựng cho .NET 4.0, tôi gặp lỗi.Svcutil.exe cho .NET 4.0?

Could not load file or assembly [...] or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

Vì vậy, có vẻ như tôi đang sử dụng phiên bản cũ của svcutil.exe. Tôi đang sử dụng một trong số "C:\Program Files\Microsoft SDKs\Windows\v7.0A là hình ảnh mới nhất tôi có thể tìm thấy. Có phiên bản mới hơn nào đó mà tôi phải sử dụng không?

Trả lời

59

Tôi gặp vấn đề tương tự. Nếu dự án của bạn được đặt để sử dụng Khuôn khổ .NET 4.0, bạn phải chọn đúng phiên bản SvcUtil.exe hoặc sẽ ném một lỗi: "Không thể tải ..."

  • Nếu bạn nhìn vào " Microsoft SDK \ Windows \ v6.0A \ Bin ", bạn sẽ thấy rằng phiên bản của exe đó là" 3.0.4506.2152 ".
  • Phiên bản của SvcUtil.exe trong "Microsoft SDK \ Windows \ v7.0A \ Bin" giống hệt nhau, vì vậy nó cũng ném cho tôi một vòng lặp.

Tuy nhiên, có một phiên bản của SvcUtil.exe nằm trong "Microsoft SDK \ Windows \ v7.0A \ Bin \ NETFX 4.0 Công cụ", đó là phiên bản "4.0.30319.1", và nếu bạn sử dụng nó, mọi thứ sẽ hoạt động.

+0

Công cụ Microsoft SDK \ Windows \ v7.0A \ Bin \ NETFX 4.0 là câu trả lời đúng. Cảm ơn! – Mark

+0

Cảm ơn bạn, mee quá, tôi rất biết ơn ... vv <3 (bình luận bất hợp pháp, tôi biết, tất cả những người khác chỉ đơn giản là bỏ phiếu này) –

0

Theo liên kết này cho .Net 4.0, bạn nên sử dụng một trong C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0 \ Bin.

http://msdn.microsoft.com/en-us/library/aa347733.aspx

Có vẻ hơi lạ tuy nhiên, nếu một trong dir v7.0A quá cũ.

+0

Tôi đã kiểm tra và cả hai đều là cùng một phiên bản, 3.0.4506.2152, vì vậy tôi gặp lỗi tương tự . –

+0

Hãy thử điều này thay vì có thể: http://stackoverflow.com/questions/896629/how-to-run-clr-2-application-as-clr-4-application –

0

Tại sao không xây dựng lại dưới dạng .NET 3.5 để tạo lớp học? Tôi nghi ngờ các loại bạn đang tạo ra các lớp học không dựa vào bất kỳ chức năng .NET 4.0. Các tập tin cs sẽ không quan tâm những gì phiên bản DLL được xây dựng để bạn có thể sử dụng chúng trong một dự án 4,0 tốt.

+0

Tôi muốn chạy svcutil như một sự kiện xây dựng để có nghĩa là luôn có assembly được tham chiếu của tôi được biên dịch thành .Net 3.5. Nó hoạt động ngay bây giờ vì không có chức năng 4.0 trong đó, nhưng tôi muốn có thể thêm nó sau này. Tôi vẫn quan tâm đến việc tìm ra lý do thực sự cho vấn đề của mình. Không có phiên bản svcutil có hỗ trợ .Net 4? Sẽ ở đó? –

+0

Tôi sẽ đánh dấu đây là câu trả lời được chấp nhận vì bây giờ nó là một công việc có thể chấp nhận được. Vẫn còn quan tâm đến câu trả lời nhiều hơn mặc dù. –

0

Tôi đang gặp vấn đề tương tự.

Microsoft nói rằng bạn chỉ có thể sử dụng .Net 4 DLL với SvcUtil mới có phiên bản mới nhất của .Net (http://msdn.microsoft.com/en-us/library/aa347733.aspx) nhưng phiên bản đó có vẻ là phiên bản bạn đang đề cập ở trên. Nó sẽ không truy cập .Net 4 DLL là tài liệu tham khảo ở tất cả.

7

Phiên bản mới nhất của SDK cho Net 4.0 là có sẵn tại

http://msdn.microsoft.com/en-us/windows/bb980924.aspx

svcutil.exe mà nằm trong v7.1/bin có phiên bản 3.0.4506.2152.

svcutil.exe nằm trong các công cụ v7.1/bin/NETFX 4.0 có phiên bản 4.0.30319.1.

+0

Tôi đã cài đặt 7.1, và thư mục BIN không có svcutil.exe .. –

+0

Chỉ ra rằng cài đặt mặc định của SDK không chọn tùy chọn .NET Tools. Với lựa chọn đó, các tập tin svcutil.exe được cài đặt. –

0

Cập nhật: Phiên bản mới nhất của util không v7.0 theo:

Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools

SvcUtil.exe v8.0A bây giờ đã có sau khi cài đặt Visual Studio 2012 (VS 2012)

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe"

gì bạn thực sự muốn là định nghĩa đầy đủ cho chuyển một tập tin WSDL vào một khách hàng dịch vụ:

/n:*,MyCompany.Services.Client /out:IServiceInterface.cs ServiceDefinition.wsdl.xml

ở đâu dịch vụ definition.wsdl rõ ràng là phản ứng wsdl từ bất kỳ điểm cuối xà phòng cũ nào.

Minions và Trolls nhớ! Mọi thứ giờ đây là Async nên hãy tìm và tận dụng lợi thế của hỗ trợ Async mới được tạo bởi v8.0 của SVCUtil.exe