I'm building a DLL, let's call it mydll.dll, and in it I sometimes need to call methods from webservice, myservice. mydll.dll is built using C# and .NET 3.5.
To consume myservice from mydll I've Added A Service in Visual Studio 2008, which is more or less the same as using svcutil.exe. Doing so creates a class I can create, and adds endpoint and bindings configurations to mydll app.config.
The problem here is that mydll app.config is never loaded. Instead, what's loaded is the app.config or web.config of the program I use mydll in.
I expect mydll to evolve, which is why I've decoupled it's funcionality from the rest of my system to begin with. During that evolution it will likely add more webservice to which it'll call, ruling out manual copy-paste ways to overcome this problem.
I've looked at several possible approaches to attacking this issue:
I'm not sure which way to go. Option 3 sounds promising, but as it turns out it's a lot of work and will probably introduce several bugs, so it doubtfully pays off. I'm also not familiar with any tool other than the canonical svcutil.exe.
Please either give pros and cons for the above alternative, provide tips for implementing any of them, or suggest other approaches.
Thanks,
Asaf
I prefer option 5 - "In code configuration", yes yes yes, you lose change-without-recompile benefit, but in depends on what you need. If you know that you will never change your endpoints or will change it rarely - just do your configuration in code, you will get compile time checking as a bonus =) This and this can help.
And btw, configuration in client configs is a common case, if you have a lot of this clients this can be pain and you should think about 3 or 5 =)
You could use svcutil as a post-build event in the application that is consuming the DLL. Like this:
svcutil.exe <service_address> /config:$(TargetPath).config /mergeConfig
This will merge the necessary config into yourapp.exe.config
. If you add a new service reference in the DLL you would have to add another line here, so it's not completely automatic, but still a bit simpler than manually copying the config.
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