2013-07-17 36 views
5

Tôi đang tạo gói NuGet, nơi tôi muốn sử dụng hai dịch vụ web.Gói NuGet: cách thêm tham chiếu vào dịch vụ web?

Tôi bắt đầu bằng cách thêm thủ công các tệp cho dịch vụ và sửa đổi tệp cấu hình. Nhưng trong khi tôi đã đi qua các tập tin và sửa các tài liệu tham khảo, tôi hiểu rằng cách tiếp cận này là không hiệu quả, đặc biệt, nếu sau này tôi sẽ cần cập nhật các dịch vụ web và tài liệu tham khảo. Tôi googled cho các giải pháp, nhưng hầu như không tìm thấy bất cứ điều gì hữu ích.

Do đó, câu hỏi của tôi là, cách tiếp cận chính xác để thêm tham chiếu vào dịch vụ web vào gói NuGet là gì?

Cảm ơn bạn.

+0

Tôi có hiểu nhầm hay bạn không thể chỉ cần nhấp chuột phải vào dịch vụ của mình và thực hiện "Cập nhật dịch vụ cập nhật"? –

+1

Từ dự án - có. Nhưng ý tưởng của tôi là nếu tôi quyết định cập nhật một gói, thì tôi cũng có thể nhanh chóng thêm/xóa/cập nhật các dịch vụ web tại đó. Vì vậy, người, người sử dụng gói của tôi không nên bận tâm khi biết rằng một số dịch vụ web cần phải được cập nhật. Mặc dù, yeah, tôi không chắc chắn rằng đây là cách nó được cho là làm việc, tôi khá mới để tạo ra các gói NuGet. – Anelook

Trả lời

2

Cách tiếp cận tôi đã chọn là sử dụng svcutil để tạo lớp proxy cho dịch vụ Web. Sau đó, tôi đã có thể sử dụng lớp proxy này để truy cập webservice, hoặc để đi xa hơn và tạo dll dựa trên nó và tham khảo dll này trong dự án được nhắm mục tiêu.

Trong trường hợp nó có thể có ích cho một ai đó, đây là mã PowerShell mà tạo ra lớp proxy và dll dựa trên một url webservice:

$className = "SomeClass"; 
$svcUri = "http://.../SomeWebService.svc?wsdl"; 
$csFile = $className + '.cs'; 
$dllName = [System.IO.Path]::Combine($temp, $className + ".dll") 
$svcUtilresult = & svcutil.exe /noConfig /out:$csFile $svcUri 
csc.exe /t:library /out:$dllName $csFile 
+0

Tôi đã thực hiện một cách tiếp cận tương tự với các API web mà tôi phải làm việc trong công việc của mình. Tôi có một số thư viện đã được thực hiện như là "đóng gói" cho một dịch vụ web để tôi có thể quản lý nó trong một dự án và sử dụng NuGet để đưa nó vào những người khác. – Logarr

1

Bạn có thể sử dụng wsdl.exe. Nếu bạn đã cài đặt Visual Studio thì bạn sẽ có thể tìm thấy nó ở đây C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin hoặc một đường dẫn tương tự tùy thuộc vào phiên bản chính xác của bạn.

Tài liệu microsoft khá đơn giản https://msdn.microsoft.com/en-us/library/7h3ystb6%28VS.80%29.aspx.

Tôi thấy rằng điều này hoạt động tốt hơn cho các dịch vụ web asmx, vì các lớp tĩnh mà nó tạo ra là kết hợp chính xác cho các lớp được tạo bằng cách sử dụng chức năng Thêm dịch vụ web/Cập nhật dịch vụ web trong Visual Studio. Tất cả những gì bạn cần làm là thêm các tệp .cs do công cụ tạo vào dự án của bạn và xóa các tham chiếu web của bạn. Bạn có thể cần phải cập nhật các tham chiếu using của mình vào không gian tên mới, nhưng đó là tất cả.

Các lớp tĩnh do svcutil.exe tạo ra phù hợp hơn với các dịch vụ WCF, công cụ đó nằm trong cùng thư mục, nếu bạn cần tìm nó từ dòng lệnh.

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