I used Microsoft Visual Studio Community 2015 running Windows 10 and targeted Windows Desktop Application to .NET Framework 4.6.1. First I downloaded the Desktop Client SDK and used 7-ZIP to extract the content of the ‘lyncsdk.exe’ distribution. The ‘lyncsdk64.msi’ installed fine on my development environment providing the assemblies needed. The can be found in ‘C:\Program Files (x86)\Microsoft Office 2013\LyncSDK\Assemblies\Desktop’.
While exploring the capabilities of the desktop client API, I wanted to be able to run two instances of Skype for Business client on a single desktop. As far as I am aware this is not available out-of-the-box.
Took some time to get everything right but here is the result. On the right-hand site one instance running the official client 15.0.4711.1000, on the left-hand site a second instance running my own C# custom client version 0.0.0.1. Thus two ‘lync.exe’ instances active with different AD credentials. To be honest not yet the full functionality, things like white boarding and application sharing are not yet implemented. But I only needed this to test IM, audio and video conversations during demo on the road using a single desktop. And convincing to evangelise the power of Skype for Business Development Platform for customers that primarily focus on the infrastructure aspects of the platform.
I will not duplicate the entire process of developing applications using Lync 2013 SDK and UI suppression, as these is very well documented and many excellent code samples are available online.
The key take-away of this BLOG post and only line of code is specifying GetClient(true) instead of GetClient() as show below.
Site by Site
var lyncClient = LyncClient.GetClient(true);
So creating a side-by-side endpoint is a one step process that involves calling the static LyncClient.GetClient method, except that you pass a boolean true value in the method if you want a side-by-side endpoint. If you do not provide an argument to this method, the default argument value of false is passed and a standard Lync endpoint is created.
The remaining is business as usual to write a UI suppressed application, although it takes quite some effort to have the user interface exactly as the Skype UI as in client 15.0.4711.1000.
If you run Site by Site mode you will see in Explorer in folder “C:\Users\…\AppData\Local\Microsoft\Office\15.0” next to the usual “Lync” also a “LyncSideBySide” directory structure. In fact up to 4 instances can run simultaneously.
More information can be found on https://msdn.microsoft.com/en-us/library/office/dn133125.aspx.