将asp.net dll引用到php

时间:2011-08-15 08:56:55

标签: php .net

我在使用DotNet类

的PHP脚本中引用ASP.NET程序集

即。

$test = new DOTNET('assemblyname','classname');

运行此脚本时出现致命错误。

致命错误:

  

未捕获的异常'com_exception',消息'无法实例化   C:\ Program中的.Net对象[CreateInstance] [0x80131513]'   Files \ xampplite \ htdocs \ xampp \ phptest.php:2堆栈跟踪:#0 C:\ Program   文件\ Xampplite文件\ htdocs中\ XAMPP \ phptest.php(2):   dotnet-> dotnet('EncryptDecrypt,...','EncryptDecrypt ....')#1 {main}   抛出C:\ Program Files \ xampplite \ htdocs \ xampp \ phptest.php在线   2

对此有何帮助?

1 个答案:

答案 0 :(得分:1)

我认为这种情况正在发生,因为您的图书馆在GAC中找不到,而且没有强名称或COMVisible。

为了使COMVisible可见,请确保AssemblyInfo.cs是这样的:

[assembly:ComVisible(true)]

对于强名称并将其安装在GAC中,我发现了这篇文章:

  

对于在GAC中注册的强名称NET程序集,您   可以只使用程序集名称,例如:$ x = new DOTNET(“myAssembly”,   “MyClass的”);

     

对于未在GAC中注册的强名称NET程序集,   你需要使用完整的汇编字符串,例如$ x =新   DOTNET('myAssembly,Version = X.X.X.X,Culture = neutral,   PublicKeyToken = ZZZZZZZZZZZZ','myClass');

     

您无法实例化尚未强名称的程序集。

     

“强名称”表示程序集具有公钥。强烈地   在Visual Studio中命名自己的类,转到中的“签名”选项卡   单击项目属性并单击“签署程序集”框并选择一个   密钥文件名。

     

要在GAC中注册程序集,可以使用各种工具   这样做,但最简单的方法是拖放已编译的   使用Windows资源管理器(shell)汇编到c:\ windows \ assembly   默认情况下安装扩展程序来处理已拖动的注册   文件)。

来源:PHP: DOTNET - Manual