Since this is the first resulted in google search when I search for publish metadata via nettcp binding.So thought to answer one more time.Suppose below is the app.config file.
<endpoint address ="" binding="netTcpBinding" contract="tester.IService1">
<baseAddresses>
<add baseAddress = "net.tcp://localhost:8732/Design_Time_Addresses/tester/Service1/" />
Step 1:Define your nettcp binding via endpoint and also the baseaddress where it need to be hosted.So it will be
<services>
<service name="tester.Service1">
<endpoint address ="" binding="netTcpBinding" contract="tester.IService></endpoint>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8732/Design_Time_Addresses/tester/Service1/"/>
</baseAddresses>
</host>
</service>
Step 2:Enable nettcp metadata endpoint.
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
Step 3:After enabling the nettcp metadata endpoint make it discoverable to the outside world,i.e by implementing IMetadataExchange contract which is done by through serviceMetadata tag.
<behaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="false" httpGetUrl=""/>
</behavior>
</serviceBehaviors>
</behaviors>
</services>
Step 4:Now relate and bind the service behavior to the exposed service.
<services>
<service name="tester.Service1" behaviorConfiguration="Default">
<endpoint address ="" binding="netTcpBinding" contract="tester.IService></endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8732/Design_Time_Addresses/tester/Service1/"/>
</baseAddresses>
</host>
</service>
</services>
Now you can check through the WCFtestclient.exe through VS command prompt and browse through net.tcp://localhost:8732/Design_Time_Addresses/tester/Service1/ or browse this address and service nettcp metadata will be discovered.
Note: If you want the metadata to be discovered through http(browser) need wsdl also then below modification is required .
1.Add a http metadata endpoint
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
2.Provide its contract implementation and make httpGetEnabled to true to make the service discoverable .
<behaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
</serviceBehaviors>
</behaviors>
So final endpoints definition will be
<services>
<service name="tester.Service1" behaviorConfiguration="Default">
<endpoint address ="" binding="netTcpBinding" contract="tester.IService></endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8732/Design_Time_Addresses/tester/Service1/"/>
<add baseAddress="http://localhost:8732/Design_Time_Addresses/tester/Service1/"/>
</baseAddresses>
</host>
</service>
</services>