PHP DOTNET ад

Я довольно новичок в PHP, и сегодня я открыл класс DOTNET .
Поэтому я изучил руководство, просмотрел веб-страницы, чтобы найти пример и, наконец, написал свое тестовое приложение:

  1. Создал новую DLL, используя профиль клиента Framework 4.0
  2. Подписал сборку с сильным именем
  3. Маркированная сборка как COM-видимая

Это тестовый код, который я написал

using System; namespace CSharpCOM { public class CSharpCOMClass { public string Base64(string s) { return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(s)); } } } 

Я собрал сборку, а затем зарегистрировался в GAC ( gacutil /if fullpath\CSharpCOM.dll ).
Если я использую gacutil /l CSharpCOM я вижу

La cache di assembly globale contiene gli assembly seguenti:
csharpcom, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = beb607ae770f5750, processorArchitecture = MSIL

Numero di elementi = 1

Так что все выглядит нормально.
Затем написал этот базовый php:

 <?php try{ $csclass = new DOTNET("CSharpCOM, Version=1.0.0.0, Culture=neutral, " . "PublicKeyToken=beb607ae770f5750", "CSharpCOM.CSharpCOMClass"); echo $csclass->Base64("Test string"),"\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } ?> 

Что бы я ни пытался, загружая страницу, размещенную в Apache ( http://localhost/test01/dotnet.php ), я всегда получаю

Пойманное исключение: Не удалось создать экземпляр объекта .Net [CreateInstance] [0x80070002] Impossibile trovare il file specificato.
Перевод может быть: невозможно найти указанный файл

Еще одна вещь: используя некоторый пример (здесь очень простой), я прочитал, что моя сборка (когда зарегистрирована) должна быть найдена на %windir%\assembly , но я могу найти ее только в %windi%\Microsoft.NET\assembly\GAC_MSIL\CSharpCOM\v4.0_1.0.0.0__beb607ae770f5750 : это правильно? Почему бы мне не включить его в первый каталог?

Еще: если я создаю другой проект framework и попытаюсь добавить ссылку .NET, я не могу найти свою сборку: связано ли это с тем, что я не могу загрузить эту сборку из PHP?

Последнее замечание: я попробовал это на Windows XP Professional SP3 32bit и на Windows Seven Enterprise 64bit

ОБНОВИТЬ:
Это работает:

 $form = new DOTNET('System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', 'System.Windows.Forms.Form'); 

но этого нет:

 $form = new DOTNET('System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', 'System.Windows.Forms.Form');` 

Возможно ли, что PHP может загружать только сборки Framework 2.0?