Dynamic endpoints in ServiceReferences.ClientConfig

后端 未结 5 1064
醉话见心
醉话见心 2020-12-16 13:56

When building an app, it is often deployed in different environments (test, dev, prod), and therefore the endpoint addresses are changing. As the ServiceReferences.ClientCon

5条回答
  •  失恋的感觉
    2020-12-16 14:26

    After reading sLedgem's post, and some googling, I found the perfect solution to make ServiceReferences act like web.config.

    First off: Create the different files manually;

    ServiceReferences.Debug.ClientConfig
    ServiceReferences.Release.ClientConfig
    

    You can add your own as well if you have more than the two default configurations in Visual Studio.

    Second: Add the file dependency in the Project.csproj file (Open the project file in a text editor):

      
        
        
          Always
        
        
          ServiceReferences.ClientConfig
        
        
          ServiceReferences.ClientConfig
        
      
    

    Now, when you reload the project, you will see that ServiceReferences.Release.ClientConfig is expandable in the Solution Explorer, and when you expand it, you will see the Release and Debug file.

    Third: Add the Transformation rules to the Project file just before the closing

    (again, open it in a text editor)

    
    
    
      
      
      
      
        
        
          $(TargetFileName).ClientConfig
        
      
    
    

    What it does is to look in the corresponding servicereferences file, depending on your configuration, and copy / replace code using the same TransformXML library that web.config uses.

    Example:

    in my ServiceReferences.ClientConfig i have the following code:

      
    

    ServiceReferences.Release.ClientConfig:

    
      
        
          
        
        
      
    
    

    As you can see, the endpoint will be replaced, and the match is done on the name attribute.

    If you have any questions, let me know :)

提交回复
热议问题