在部署一个vs2008环境下的Winform应用程序时,因为引用一个Html编辑器,而用到了Microsoft
mshtml.dll程序集,
版本为7.0.3300.0,对应文件在
E:/Vs2008的安装目录/Visual
Studio Tools for Office/PIA/Office11/Microsoft.mshtml.dll
E:/Vs2008
的安装目录/Visual Studio Tools for Office/PIA/Office12/Microsoft.mshtml.dll
添
加项目引用时可以在GAC程序集里选择,因为在安装Visual Studio Tools for
Office时已经对该组件进行注册,并部署到GAC里。
程序运行在本机无错误。
部署到客户端,注:客户端没有
vs200X开发环境。,结果运行出错,提示:
System.Reflection.TargetInvocationException:
调用的目标发生了异常。 ---> System.IO.FileNotFoundException:
未能加载文件或程序集“Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。
默认引用属性改为:
复制本地=True
特定版本=false;
问题依然出现。直接复制dll到客户端依然出错。
后来看到一篇文章,说是重新生成一个mshtml.dll的版
本,可以部署。
http://www.cnblogs.com/gjs85/archive/2010/01/23/1654761.html
大
意是:
因为 Microsoft.mshtmal.dll 这个 dll 是从 system32 文件夹下的
mshtml.tlb(COM 类型库文件)中导出的,因此我们只需要用 VS2008 自带的 TlbImp.exe COM 类型库导出工具将这个
tlb 文件再导一遍就可以了。我使用下面的脚本进行导出: tlbimp mshtml.tlb /out:mshtml.dll
最后得到一个 mshtml.dll 程序集文件,将我们项目中引用的 Microsoft.mshtmal.dll 替换为
mshtml.dll,再打包时这个 dll 就可以被添加到安装项目中了。
试了下,没有成功,后来想了一下,应该不需要这样,因为本机可以运行,说明dll是可用的,只是在部署到客户端时无法识别该程序集而已。
于
是在重新添加新的引用时,观察了一下引用界面,发现有三个mshtml,而不是两个。
于是尝试添加第三个,
并将默认引用属性改为:
复制本地=True
特定版本=false;
在安装部署程序中添加主程序
下/bin/Microsoft.mshtml.dll,编译时已复制到bin下。
部署到客户端,OK!
这个文件比较大,
有7.63M,安装部署程序压缩后也有1.7M。所以也有一种轻巧的替代方案,只有100多K,
请参看,
http://www.cnblogs.com/wuhuacong/archive/2009/11/12/1601532.html
http://www.codeproject.com/KB/miscctrl/csEXWB.aspx?msg=2814607#xx2814607xx
邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。
助人等于自助! 3w@live.cn
分享到:
相关推荐
部署 ClickOnce 应用程序 winform
c# winform 程序打包部署和VS2008制作程序安装包.docx
winform 简单程序集源码! 很值得下载看看!资源免费,大家分享!!
WINFORM的打包和部署WINFORM的打包和部署WINFORM的打包和部署WINFORM的打包和部署WINFORM的打包和部署WINFORM的打包和部署
winform 动态发射程序集源码! 很值得下载看看!资源免费,大家分享!!
winform调控制台程序
自己学习C#,编写的画图程序,开发工具是vs2010,winform窗体的程序,很简单的功能,解决了一些小的毛病,基本可以使用,参考了网上的一些资料。C#初学者看看挺好的,有一定帮助。
最详细winform的安装部署(VS2012InstallShield2015LimitedEdition)打包程序详解)
c#winform程序打包c#winform程序打包部署借鉴.pdf
VS2012打包部署Winform程序。详细描述打包过程。
winform程序维护自动升级程序,源码.
winform datagridview多线程出现红叉解决方案,只要将运行的代码由创建线程调用就OK了
winform程序打包部署
winform程序 Microsoft.ReportViewer.WinForms, Version=9.0.0.0, Culture=neutra 未能加载文件或程序集microsoft.reportviewer.winforms
一个简单的C#WinForm窗体包含3个功能,由3个按钮分别实现: 1.点击按钮1弹出表白消息提示框,消息提示可以依据自己的需求修改代码; 2.点击按钮2变更picturebox属性,变更为可视状态,显示送给女朋友的花; 3.点击...
本人写的针对WinForm程序自动升级程序,适用于所有WinForm客户端程序,非常方便,分享给大家共同学习。
winform c# 拨号程序代码winform c# 拨号程序代码winform c# 拨号程序代码
winform C# 定时程序
winform_datagridview多线程出现红叉解决方案
c#WinForm生成安装程序c#WinForm生成安装程序c#WinForm生成安装程序