我写了一个小应用程序,我正在分发给我的一些朋友。它与网页交互,我认为奇怪的唯一依赖是Microsoft.mshtml.dll与某些网页控件进行交互。
我们注意到一种奇怪的行为,在某些计算机上它起作用,而在其他计算机上却没有。我告诉他们所有人都要确保安装.Net 4.0 Framework FULL而不是客户端配置文件。它仍然无效。
我的一个朋友注意到他的机器已经安装了Microsoft Word,其他人没有。所以他安装了一个试用版,神奇地,我的程序开始工作了!
安装了不在.Net Framework中的Microsoft Word?有什么办法可以发给他们所需的文件吗?
注意:我最初使用的是安装程序,它工作正常,但我无法弄清楚如何更新应用程序,所以我们回到我身边只是将它们以压缩方式发送给应用程序。所以,请不要回答“制作安装程序项目”。我目前正试图弄清楚如何制作更新程序,这不是这里讨论的主题。
谢谢!
编辑:我没有明知为Word添加任何依赖...
答案 0 :(得分:2)
如果您使用的是像Microsoft.mshtml.dll这样的库,它们不是.Net框架的一部分,但是属于Native .Net,则有可能目标机器缺少这些库。对于例如Microsoft.mshtml.dll附带Visual Studio工具,用于办公室支持等。因此,如果目标计算机上未安装Office / Visual Studio,则应用程序将无法运行。
作为替代解决方案,识别它们并保留这些相关dll的本地副本并将其发送到您的包中。但这不是最佳做法。
但Paul_R说得对。在发布之前,确定您的客户端基础架构,计划和测试一次(在目标环境中)。请记住,您有一台开发者机器,但其他人没有。
答案 1 :(得分:1)
嗯,最好避免依赖其他应用程序。因此,尽量避免使用该库提供的方法/数据结构。有可能有一个原生于.NET的库可以满足您的需求。如果没有,请查找一些开源库,您可以使用.dll形式轻松地将其包含在您的应用程序中(在许多情况下,您甚至可以告诉它将自己附加到应用程序中)。如果您正在进行一些html解析,我完全推荐HTMLAgilityPack(http://htmlagilitypack.codeplex.com/)。
答案 2 :(得分:0)
要回答您提出的问题: 使用未随.NET Framework一起安装的Word安装了LOT。 Word是非常复杂的应用程序。
理论上,是的,您可以向他们发送所需的文件。 在实践中,您手动重新创建半个Word安装,并侵犯版权。请不要。
我同意Paul_R:如果您的"客户"尽量避免依赖。不是Word用户。
答案 3 :(得分:0)
安装了不在.Net中的Microsoft Word 框架?
Microsoft Word应用程序本身及其所有支持文件。
有什么办法可以发给他们所需的文件吗?
是。但是,在继续之前,您需要考虑一些事项。
最安全的赌注是找到一些轻量级且可自由再发行的东西,它具有您需要的功能,而不是Microsoft Word。
或者,您可以让应用程序禁用使用可能不存在的依赖项的功能。
编辑:如果您要部署依赖项,只需要识别它们并确保它们已打包。像.NET Reflector这样的工具非常适合识别所有下游依赖项。