环境:VS2005 C# XP原以为.net程序只要在目标机器上装上.net framework就OK,没想到我大错特错了。我在工程中引用了很多COM接口,它们的GUID如下:
C4D244B0-D43E-11CF-893B-00AA00BDCE1A
bd3f23c0-d43e-11cf-893b-00aa00bdce1a
3050F3F0-98B5-11CF-BB82-00AA00BDCE0B
34A715A0-6587-11D0-924A-0020AFC7AC4D
D30C1661-CDAF-11d0-8A3E-00C04FC9E26E79eac9e7-baf9-11ce-8c82-00aa004ba90b
00000001-0000-0000-C000-000000000046本机上编译运行一切正常,客户机上一启动就异常(装.net了)。
难道是使用这些接口还有什么其它讲究???望大师们指教,小弟拜谢了!

解决方案 »

  1.   

    问题解决,原因是:
    情况是这样的。用C#开发一个桌面应用程序(自然是WINDOWS的),包含了Webbrowser。然后打包应用程序(同时打包.NET2.0或.NET3.0都行),在两台电脑上部署。一台电脑上安装VS2005,另一台不装。运行程序可能会出现下述现象:在装了VS2005的机器上可以正常运行,然而在没有安装VS2005的机器上,程序会停在非常奇怪的位置一动不动,打出的LOG也非常奇怪,譬如你仅仅是简单的调用同一个CLASS中的方法,居然会停在调用前的位置纹丝不动!无论怎么部署.NET环境都不行,但是安装VS2005调试程序就好用了。。     原因刚刚查明。这绝对是由于(除非你程序写错了,而且错得可以挑选机器)你的工程内,导入了Microsoft.mshtml.dll。这个类库在.NET1.0被包含,却并未随着.NET2.0,3.0一起安装。VS2005安装的时候,会自动装上.NET1.0的开发环境,因此不会出问题。但是没有装VS2005可就。     知道了原因,解决方案就非常简单。     1.不用mshtml.dll。:(     2.第一步。到你的开发机上,把C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll拷贝到你的工程目录下。我是考到了工程的SystemDll文件夹下。       第二步。删除你工程里引用的系统的Microsoft.mshtml.dll。重新引用刚刚你拷贝过来的dll,并且把Copy Local设为TRUE,确保会把此dll拷贝到你的编译文件夹。 
          第三步。在部署的时候,把你工程编译文件夹下的Microsoft.mshtml.dll同时打包一起安装到客户的机器上即可。 
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cisso/archive/2009/02/18/3907740.aspx