gpt4 book ai didi

visual-studio-2010 - 如何完全发布 Visual C# 项目?

转载 作者:行者123 更新时间:2023-12-04 05:44:30 26 4
gpt4 key购买 nike

我有一个相当基本的 Visual C# 项目(不超过 100 行),但它包含一些 3rd 方 DLL 引用。在开发项目的计算机上运行该项目可以正常运行。

在 Microsoft Visual C# 2010 Express 中,我转到 Project->Publish <project name>它会构建一些文件,包括 setup.exe 安装程序。

当我将这些文件移动到另一台计算机并运行 setup.exe 时,它​​会正确安装该程序。

但是当我运行程序时,它只是关闭说:

ProjectName.exe has encountered a problem and needs to close. We are sorry for the inconvenience.



命令窗口也会出现一秒钟,但有一些错误,但很难弄清楚它在说什么。它看起来像:

Unhandled Exception: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for the component with CLSID { ....... } failed due to the following error: .....



我无法让命令窗口停留,所以我无法获得完整的消息。但我认为这是由于另一台计算机没有那些 3rd 方 DLLS。

我怎样才能让 Visual C# 2010 打包包括 DLL 在内的所有内容,以免出现此错误?或者,如果这可能不是实际问题,我该如何阻止命令窗口立即消失? (我不知道所需 DLL 的完整列表)

或者,如果 DLL 是 C:\Windows\system32 下的注册 DLL,项目是否永远不会将其构建到包中?有没有办法看到它取决于什么?

最佳答案

Visual Studio 2010 Express 不会创建功能齐全的安装程序,而只会创建 ClickOnce 安装程序,以及那些功能有限的安装程序。这种安装程序无法注册 COM DLL。

您的情况似乎是错误的,因为您使用的是未在目标系统上注册的 COM DLL。您可以尝试在自己的程序中进行检查(例如尝试创建类并捕获 CreateObject 函数抛出的任何异常),然后调用 RegSvr32.exe/s 以注册它。或者您只是在程序第一次启动时执行此操作,然后再从 DLL 创建任何对象……不过还没有尝试过。

您还可以确保在运行程序之前在目标系统上手动注册 DLL。

此外,当 .Net 使用 COM DLL 时,它通常会创建一个兼容性程序集,该程序集包装 COM DLL 并使其可访问 .Net。如果您使用的 DLL 只是此兼容性程序集,您可能必须在您的系统上手动找到它所依赖的 COM DLL,并将其明确包含在您的项目文件中。

为了调试,在 CreateObject 周围放置 try/catch 块应该就足够了。如果这没有帮助,请尝试为应用程序未处理异常时引发的事件添加事件处理程序(这可能因您创建的应用程序类型而异)。

关于visual-studio-2010 - 如何完全发布 Visual C# 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10855087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com