我正在尝试从c#类代码打开ReqPro项目。遵循的步骤是:
添加对ReqPro.dll的引用(可扩展性COM dll)
创建一种ReqPro40.Application类型,并具有一个ReqPro40.ApplicationClass实例,例如:
ReqPro40.Application appReqPro = new ApplicationClass();
ReqPro40.Project prjReqPro;
prjReqPro = appReqPro.OpenProject(@"D:\MyReqPro\MyReqPro.rqs", ReqPro40.enumOpenProjectOptions.eOpenProjOpt_RQSFile, "admin", "admin", ReqPro40.enumProjectFlags.eProjFlag_Normal, ReqPro40.enumRelatedProjectOptions.eRelatedProjOption_ConnectNone);
该代码可以很好地编译,但是在运行时(我编写了一个简单的单元测试),无法显示
"Could not load file or assembly 'Interop.ReqPro40, Version=1.10.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.":"Interop.ReqPro40, Version=1.10.0.0, Culture=neutral, PublicKeyToken=null"
。更新1:
我在笔记本电脑上尝试了一下,效果很好。我的笔记本电脑上安装了ReqPro。但是它在服务器(Windows 2008 Enterprise)上不起作用。我使用远程连接连接到服务器。有什么线索吗?
更新赏金
我期待一些可以重新创建步骤的工作代码。
最佳答案
请在服务器上检查ReqPro.dll是否在根文件夹中,有时将引用的dll不在复制到bin文件夹中。您也可以在app.config文件中指定“探测”元素,以指定CLR在找不到程序集时可以搜索以找到引用程序集的子文件夹。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schmas-AWorks-cam:asm.v1">
<probling privatePath="bin\Ordersbin;Extbin"/>
</assemblyBinding>
</runtime>
</configuration>
更新:
如果还没有,我建议您使用安装项目来安装项目,这将确保安装了应用程序后,所有第3方dll自动复制到根文件夹中。