我正在使用 C#项目,因为它使用的是Sharepoint我正在使用MS Server 2008。
项目在服务器上编译并运行正常,所以我认为是时候进行部署了,并创建了一个由Visual Studio 本身提供的安装程序项目。
当我运行安装程序然后运行服务器上的程序时,它运行完美。但是当我在本地计算机上执行此操作时,它会显示缺少COM引用或其他内容。
事实是这个项目确实引用了我公司提供的Visual Basic DLL ,我只是不明白为什么安装程序不会复制/注册它单独。它设法获得了一些其他需要的DLL并将其复制到安装文件夹(如Microsoft.IdentityModel.dll,Microsoft.SharePoint.Client.dll ...)。
有什么暗示我应该怎么做让它运作? 我无法访问引用的DLL的“复制本地”属性(它是灰色的)。
编辑:一些图片,也许它会有所帮助:
编辑2:所以我认为这有点复杂。事实上,当我只是引用原始的DLL (这是GestionClevb6.dll)时,我最终在程序中收到“未注册的类”错误。 但是,如果我引用生成的Interop.GestionClevb6.dll ,我会注意到另一个DLL被添加到部署项目(我猜是一个依赖项)。哦耶。所以我最后有两个DLL,GestionClevb6.dll和新的DLL_Licence.dll,以及一个全新的bug:“例外de HRESULT:0x800AC352。”
答案 0 :(得分:2)
缺少COM引用的错误意味着您的项目引用了COM类,但在系统上,您尝试运行未注册COM类的程序。
您需要在设置过程中使设置注册COM-DLL。它不会自动完成!否则,如果COM-DLL尚未注册,您将收到此错误。我想在它工作的服务器上,DLL之前已经注册过。
不明白为什么安装程序不会自行复制/注册它。
安装程序应该如何知道它是必须注册的COM DLL?
它成功获得了一些其他需要的DLL并将其复制到安装文件夹(如Microsoft.IdentityModel.dll,Microsoft.SharePoint.Client.dll ......
这些是您的项目直接引用的托管DLL。他们不需要注册。此外,由于这些是受管理引用的DLL,如果相应地配置了引用的“复制本地”属性,它们将作为“项目输出”的一部分进行复制。
但是,这对COM-DLL不起作用。 COM引用没有“复制本地”属性,因为它无论如何都无济于事 - 需要注册包含COM类的DLL。单独复制不会注册它们。