Determining assembly name for use with PHP DOTNET
<p>I am trying to  use Microsoft's Speech Platform 11 through PHP's DOTNET object
<a href="https://msdn.microsoft.com/en-us/library/jj127858.aspx" rel="nofollow">https://msdn.microsoft.com/en-us/library/jj127858.aspx</a></p>

<p>The platform should be instantiated as follows</p>

<pre><code>$platform = new DOTNET("assembly-name", "Microsoft.Speech.Recognition");
</code></pre>

<p>But how to retrieve the assembly name for Speech Platform 11? (to replace "assembly-name" in the initialization call)</p>

<p>I have tried several assembly names by... guesswork, obviously with no luck.
The initialization error being thrown</p>

<pre><code>Failed to instantiate .Net object [CreateInstance] [0x80070002] The system cannot find the file specified
</code></pre>

<p><strong>UPDATE</strong></p>

<p>With the following code, I was able to get PHP to find and use the assembly</p>

<pre><code>$full_assembly_string = 'Microsoft.Speech, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35';
$full_class_name = 'Microsoft.Speech.Recognition.SpeechRecognitionEngine';

$interface = new DOTNET($full_assembly_string, $full_class_name);
</code></pre>

<p>However, there's a new roadblock:</p>

<pre><code>Failed to instantiate .Net object [Unwrapped, QI for IDispatch] [0x80004002] No such interface supported
</code></pre>

<p>At first glance it seems it has to do with COM visibility. But if for any reason the class isn't visible to COM (and it seems odd), how to change this? Is it even possible?</p>