为什么这个实例创建reqpro40.applicationclass失败?

时间:2011-05-30 11:59:28

标签: c# .net interop objectinstantiation

我正在尝试从c#类代码中打开一个ReqPro项目。接下来的步骤是:

  1. 添加对ReqPro.dll(可扩展性COM dll)
  2. 的引用
  3. 创建一种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);
    
  4. 代码编译得很好,但是在运行时(我写了一个简单的单元测试),它没有说"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"

    UPDATE1:

    我在笔记本电脑上试了一下,它运行正常。我的笔记本电脑上安装了ReqPro。但它不适用于服务器(Windows 2008 Enterprise)。我使用远程连接连接到服务器。任何线索?

    赏金更新

    我期望一些工作代码可以重新创建步骤。

1 个答案:

答案 0 :(得分:2)

请检查服务器上的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>

更新: 如果你还没有我建议你使用安装项目安装你的项目,这将确保任何第三方dll自动被复制到根文件夹是否安装了应用程序。