I post this quick note as it took a while to figure this out and I want a ref when I forget. If the Address and Via are different, then you need to use the "-name" parm on the newest wsewsdl2 tool to get your proxy. In fact, I think this "-name" parm is required on a soap.tcp service. So assuming your "via" and "address" are like below, the command line would be as shown. Naturally your service must be running.
Uri via = new Uri("soap.tcp://localhost/MyService");
Uri address = new Uri("soap://localhost/MyServiceV1");
C:\Program Files\Microsoft WSE\v2.0\Tools\Wsdl>wsewsdl2 soap.tcp://localhost/MyService -name soap://localhost/MyServiceV1 output.cs
Make sure you install the WSE 2.0 SP2 and use wsewsdl2.exe.