So it seems like I have a couple of major options when getting WCF service proxy code into a project in Visual Studio:
Use Visual Studio's built-in tooling for Service References
Use a simple svcutil command, something like svcutil http://[my
endpoint] /namespace:[my namespace] /noconfig
(since I use some
fairly standard bindings across projects), and drag the resulting
file into my project (or upgrade in place).
To be clear, option 2 feels like the best one, albiet with no built-in tooling for updating. But the Service Reference dialog generates like a zillion files. Is there any obscure benefit to VS Service References that I'm missing?
Svcutil.exe can be used to download metadata from running services, and save the metadata to local files. To download metadata, you must specify the /t:metadata option. Otherwise, client code is generated.
For . NET Framework projects, service reference enables a project to access one or more WCF Data Services. Use the Add Service Reference dialog box to search for WCF Data Services in the current solution, locally, on a local area network, or on the Internet.
The Windows Communication Foundation (WCF) dotnet-svcutil tool is a . NET tool that retrieves metadata from a web service on a network location or from a WSDL file, and generates a WCF class containing client proxy methods that access the web service operations.
NET Core or . NET Standard project, this option is available when you right-click on the Dependencies node of the project in Solution Explorer and choose Manage Connected Services.) On the Connected Services page, select Add Service Reference. The Add service reference page opens.
Same reason why you build a .net project with VS and not calling the compiler by hand from command line. The I of IDE stands for Integrated, it does things for you so you do not need to do those things manually from many separated places and procedures.
There is usually a way to do many of those things by hand or with a text editor and command prompt but lets be productive :-)
If you also own the service, I'd say don't use either one. Instead, break up your contracts, entities, and client proxies into different assemblies that you can use both on the service and the client.
Kinda like described in WCF The Manual Way... The Right Way.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With