3

我写了一个小应用程序,我正在分发给我的一些朋友。它与网页交互,我认为奇怪的唯一依赖是 Microsoft.mshtml.dll 与一些 Web 控件交互。

我们注意到一个奇怪的行为,在某些计算机上它可以工作,而在其他计算机上却没有。我告诉他们确保安装 .Net 4.0 Framework FULL 而不是客户端配置文件。它仍然没有工作。

我的一位朋友注意到,他的机器确实安装了 Microsoft Word,而其他机器则没有。所以他安装了一个试用版,神奇地,我的程序开始工作了!

.Net Framework 中没有的 Microsoft Word 安装了什么?有什么办法可以向他们发送所需的文件吗?

注意:我最初使用的是安装程序,它运行良好,但我不知道如何更新应用程序,所以我们只好将应用程序以 zip 的形式发送给我。所以请不要回答说“制作一个安装程序项目”。我目前正在尝试弄清楚如何制作更新程序,这不是这里讨论的主题。

谢谢!

编辑:我没有故意向 Word 添加任何依赖项...

4

4 回答 4

2

如果您使用一些像 Microsoft.mshtml.dll 这样的库,它们不是 .Net 框架的一部分,但属于 Native .Net,那么这些库可能缺少目标机器。例如,Microsoft.mshtml.dll 带有用于 Office 支持等的 Visual Studio 工具,因此如果目标计算机上未安装 Office/Visual Studio,则应用程序将无法运行。

作为一种替代解决方案,识别它们并保留这些依赖 dll 的本地副本并将它们发送到您的包中。但这不是最佳做法。

但 Paul_R 说得对。确定您的客户端基础架构,在发布之前计划和测试一次(在目标环境中)。请记住,您有一台 Developer 机器,但其他机器没有。

于 2013-06-24T15:41:10.343 回答
1

好吧,最好避免对其他应用程序的依赖。因此,尽量避免使用该库提供的方法/数据结构。有可能有一个原生于 .NET 的库可以满足您的需求。如果没有,请寻找一些可以轻松以 .dll 形式包含在应用程序中的开源库(在许多情况下,您甚至可以告诉它自己附加到应用程序)。如果你正在做一些 html 解析,我完全推荐 HTMLAgilityPack ( http://htmlagilitypack.codeplex.com/ )。

于 2013-06-24T15:31:38.040 回答
0

要回答您提出的问题:很多是随 Word 安装的,而未随 .NET Framework 安装。Word 是非常复杂的应用程序。

理论上,是的,您也许可以向他们发送所需的文件。在实践中,您会手动重新创建半个 Word 安装,并侵犯版权。请不要。

我同意 Paul_R:如果您的“客户”不是 Word 用户,请尽量避免依赖。

于 2013-06-24T15:37:02.650 回答
0

.Net Framework 中没有的 Microsoft Word 安装了什么?

Microsoft Word 应用程序本身及其所有支持文件。

有什么办法可以向他们发送所需的文件吗?

是的。但是,在继续之前,您需要考虑一些事项。

  • 重新分配您所依赖的某些东西可能是非法的。在您继续之前,请仔细阅读并进行研究。
  • 如果您依赖具有所需依赖项的系统,您将遇到依赖项不存在或存在其他版本的依赖项的问题。

最安全的选择是找到具有所需功能的轻量级且可自由再分发的东西,而不是 Microsoft Word。

或者,您可以让您的应用程序禁用使用可能不存在的依赖项的功能。

编辑:如果您要部署依赖项,只需识别它们并确保它们被打包。.NET Reflector 等工具非常适合识别所有下游依赖项。

于 2013-06-24T15:41:16.473 回答