用C#写了个小程序,想在其它机器上使用。
在其它机器上安装了vs2005(我用这个开发的)自带的的.net framework 2.0及语言包。然后复制我的程序过来包括工程目录下的所有DLL文件。不能使用。安装VS2005后可以使用了。但不能每台机器都安装啊.
我引用了 MSHTML 和 SHDocVw.dll 是个网页程序。
那位给指教一下。

解决方案 »

  1.   

    要安装.net   framework   2.0
      

  2.   

    我说过已经装了。
    在其它机器上安装了vs2005(我用这个开发的)自带的的.net   framework   2.0及语言包。
      

  3.   

    使用发布版编译试试
    是不是运行时什么提示都没有?打包的时候查看依赖项,看是不是有缺少第三方控件或dll
      

  4.   

    1、你写的是打包其实你就是复制了执行目录的文件,那不叫打包
    2、“运行是弹出一个对话框说:遇到问题需要关闭” .net程序出现错误,一般会有个详细信息按钮,你没看信息
    3、MSHTML   和   SHDocVw.dll 不是.net环境下的文件,是com组件.net要使用需要封装。而vs安装后会有几个默认封装过的其中有MSHTML,所在位置
       Program Files\Microsoft.NET\Primary Interop Assemblies估计就是这些com组件的封装类没复制过去,看了详细出错信息的话,问题应该很明显看出来
      

  5.   

    碰到一个高手,多多请教。
    1.我用VS自带的安装和部署做了一个打包,但只多了一个 Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll 这么个东西,另外由于出现一个错误:应将“shdocvw.dll”排除,原因是其源文件“C:\WINNT\system32\shdocvw.dll”受到“Windows 系统文件保护”。我认为这个文件是系统自带的,也将他排除了。
    2.你说的详细信息按钮,我在另外一台机器上看到过,但现在这台机器确实没有,而另一台机器已经让我安装了vs2005,系统可以正常运行,也看不到了。
    3.感谢这条意见,正在测试!!!
      

  6.   

    问题解决了一半,复制了一个Microsoft.mshtml.dll到应用程序文件夹,程序可以打开窗口运行,但运行中出错(也就是刚开始运行)。错误如下:那位大侠给看看:
    无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLImgClass”。进入 CLR 且不支持 IProvideClassInfo 或没有注册任何互操作程序集的 COM 组件都将包装在 __ComObject 类型中。这种类型的实例不能强制转换为任何其他类;不过,只要基础 COM 组件支持对接口 IID 的 QueryInterface 调用,就能将这些实例强制转换为接口。以下是详细信息:有关调用实时(JIT)调试而不是此对话框的详细信息,
    请参见此消息的结尾。************** 异常文本 **************
    System.InvalidCastException: 无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLImgClass”。进入 CLR 且不支持 IProvideClassInfo 或没有注册任何互操作程序集的 COM 组件都将包装在 __ComObject 类型中。这种类型的实例不能强制转换为任何其他类;不过,只要基础 COM 组件支持对接口 IID 的 QueryInterface 调用,就能将这些实例强制转换为接口。
       在 xx.Form1.loginuser()
       在 xx.Form1.登陆()
       在 xx.Form1.主时间驱动(Object sender, EventArgs e)
       在 System.Windows.Forms.Timer.OnTick(EventArgs e)
       在 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
       在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    ************** 已加载的程序集 **************
    mscorlib
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.832 (QFE.050727-8300)
        基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    xx
        程序集版本: 1.0.0.0
        Win32 版本: 1.0.0.0
        基本代码: file:///D:/Program%20Files/DDY/xx.exe
    ----------------------------------------
    System.Windows.Forms
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.832 (QFE.050727-8300)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.832 (QFE.050727-8300)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.832 (QFE.050727-8300)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    Microsoft.mshtml
        程序集版本: 7.0.3300.0
        Win32 版本: 7.0.3300.0
        基本代码: file:///D:/Program%20Files/DDY/Microsoft.mshtml.DLL
    ----------------------------------------
    AxInterop.SHDocVw
        程序集版本: 1.1.0.0
        Win32 版本: 1.1.0.0
        基本代码: file:///D:/Program%20Files/DDY/AxInterop.SHDocVw.DLL
    ----------------------------------------
    System.Windows.Forms.resources
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.42 (RTM.050727-4200)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    Interop.SHDocVw
        程序集版本: 1.1.0.0
        Win32 版本: 1.1.0.0
        基本代码: file:///D:/Program%20Files/DDY/Interop.SHDocVw.DLL
    ----------------------------------------
    Accessibility
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.42 (RTM.050727-4200)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
    ----------------------------------------
    mscorlib.resources
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.832 (QFE.050727-8300)
        基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------************** JIT 调试 **************
    要启用实时(JIT)调试,
    该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置
    jitDebugging 值。
    编译应用程序时还必须启用
    调试。例如: <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>启用 JIT 调试后,任何无法处理的异常
    都将被发送到在此计算机上注册的 JIT 调试器,
    而不是由此对话框处理。
      

  7.   

    根据这个错误
    System.InvalidCastException:   无法将类型为“System.__ComObject”的   COM   对象强制转换为类类型“mshtml.HTMLImgClass”。进入   CLR   且不支持   IProvideClassInfo   或没有注册任何互操作程序集的   COM   组件都将包装在   __ComObject   类型中。这种类型的实例不能强制转换为任何其他类;不过,只要基础   COM   组件支持对接口   IID   的   QueryInterface   调用,就能将这些实例强制转换为接口。 查看了源程序如下:
                IHTMLDocument2 doc;
              doc = (IHTMLDocument2)axWebBrowser.Document;
                        IHTMLDocument3 doc1;
                        int i = 0;
                        object j = (object)i;
                        IHTMLWindow2 frame = (IHTMLWindow2)doc.frames.item(ref j);
                        doc1 = (IHTMLDocument3)frame.document;
                        HTMLInputElement username = (HTMLInputElement)doc1.getElementById("user_name");
                        HTMLInputElement password = (HTMLInputElement)doc1.getElementById("password");
                        HTMLImgClass imgLogin = (HTMLImgClass)doc1.getElementById("imgLogin");我认为还是有组件没有注册,但不知道该怎么办了,求大家帮忙。
      

  8.   

    做成安装包后就可以运行了,因为安装包会把引用的dll都注册到目标机器上
      

  9.   

    安装包不行,做的安装包连mshtml.dll都没有包进去。
      

  10.   

    和我遇到的问题一样,我找到了这样的解决方案,用C#写的WinForms程序,在自已机器上能正常运行,在其他机器上不能运行,提示“遇到问题需要关闭。我们对此引起的不便表示抱歉。”网上搜索在其他机器上不能运行原因主要有两个:
    1.没有装.Net Framework
    2.缺少关联的程序集如果没有装.Net Framework错误提示不会这样。原因应该是缺少关联的程序集。找到错误的地方,程序引用了C:\Windows\System32\mshtml.tlb,当使用 mshtml 空间中的对象时就提示“遇到问题需要关闭。我们对此引起的不便表示抱歉。”解决的方法
    通过类型库导入程序(Tlbimp.exe)将 COM 类型库中的类型定义转换为公共语言运行库程序集中。
    在 Visual Studio 命令提示中执行
    tlbimp C:\Windows\System32\mshtml.tlb /out:C:\mshtml.dll
    转换需要一定时间,生成的 mshtml.dll 有8M。
    在WinForms程序中添加引用这个 mshtml.dll,不要引用 C:\Windows\System32\mshtml.tlb
    最后把这个mshtml.dll和exe文件复制过去就可以用了。
    可惜我照做了我的问题还是没有解决,不知道你的有没有解决了,如解决了烦请赐教
      

  11.   

    Setting environment for using Microsoft Visual Studio 2005 Itanium cross tools.C:\Program Files\Microsoft Visual Studio 8\VC>tlbimp C:\Windows\System32\mshtml.
    tlb /out:C:\mshtml.dll
    Microsoft (R) .NET Framework Type Library to Assembly Converter 2.0.50727.42
    Copyright (C) Microsoft Corporation.  All rights reserved.TlbImp : warning TI0000 : Primary interop assembly 'Microsoft.mshtml, Version=7.
    0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is already registere
    d for type library 'C:\Windows\System32\mshtml.tlb'.
    TlbImp : warning TI0000 : “IActiveIMMApp.GetDefaultIMEWnd”的至少一个参数不能由
    运行时封送拆收器进行封送处理。因此,此类参数将作为指针进行传递,并可能需要不安全
    代码进行操作。
    TlbImp : warning TI0000 : 类型库导入程序未能转换成员“__MIDL___MIDL_itf_mshtml_0
    256_0010.hbmpChecked”的签名。
    TlbImp : warning TI0000 : 类型库导入程序未能转换成员“__MIDL___MIDL_itf_mshtml_0
    256_0010.hbmpUnchecked”的签名。
    TlbImp : warning TI0000 : 类型库导入程序未能转换成员“__MIDL___MIDL_itf_mshtml_0
    256_0010.hbmpItem”的签名。
    TlbImp : warning TI0000 : 类型库导入程序未能转换成员“_userBITMAP.pBuffer”的签
    名。
    TlbImp : warning TI0000 : 类型库导入程序未能转换成员“__MIDL___MIDL_itf_mshtml_0
    256_0011.hbmpChecked”的签名。
    TlbImp : warning TI0000 : 类型库导入程序未能转换成员“__MIDL___MIDL_itf_mshtml_0
    256_0011.hbmpUnchecked”的签名。
    TlbImp : warning TI0000 : 类型库导入程序未能转换成员“__MIDL___MIDL_itf_mshtml_0
    256_0011.hbmpItem”的签名。
    TlbImp : warning TI0000 : 类型库导入程序未能转换成员“_FLAGGED_BYTE_BLOB.abData
    ”的签名。
    Type library imported to C:\mshtml.dllC:\Program Files\Microsoft Visual Studio 8\VC>这是我照做了输出的东西,