我有一个在 Visual Studio 2005 中开发的应用程序,我正在使用 ClickOnce 进行部署。我的解决方案包含两个项目 - 用 VB 编码的用户界面层和用 C# 编码的类库。我的 C# 类库有一些使用 Outlook 和 Excel 互操作程序集(Microsoft.Office.Interop.Outlook 和 Microsoft.Office.Interop.Excel,均为版本 11)的代码。这是我的问题。
- 尽管我没有找到绝对的说法,但我的理解是,您必须拥有适当版本的 Office 应用程序 (Outlook/Excel) 才能安装使用 Interop 程序集的应用程序。它是否正确?
如果 (1. = 是) 那么
如果您的应用程序仅将 Interop 程序集用于少数几个功能,而这些功能仅由总用户群中的少数人使用,您将如何处理这种情况?如果只有部分用户需要使用这些功能,为什么我必须要求应用程序的每个用户安装 Microsoft Office?这些互操作程序集只是.dll文件,那么是什么让它们与其他文件如此不同,因为无论客户端安装什么软件,您都不能只将文件与您的项目一起发布并满足引用? (显然,我对 GAC 及其对 Visual Studio 行为的影响了解甚少。)我很乐意编写自己的代码来检查是否存在使用 Office 软件的少数功能所需的 Office 软件。没有 Office,无法使用功能...
Else
如果我对此的理解不正确,那么如何设置我的引用和 ClickOnce 设置,以便用户在尝试安装时不会遇到以下错误?
“无法安装或运行该应用程序。该应用程序要求首先将程序集办公室版本 11.0.0.0 安装在全局程序集缓存 (GAC) 中。
请联系您的系统管理员。”
- 我尝试将 Interop 引用 CopyLocal 属性设置为 True 和 False。
- 在我的 ClickOnce 应用程序文件列表中,我尝试将这些程序集设置为“包含”、“排除”和“先决条件”。
- 在我的研究中,我发现有些人的这些引用指向 *C:\WINDOWS\ assembly\GAC*,我的则指向 *C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office11*但我还没有找到改变参考路径的方法。根据http://msdn.microsoft.com/en-us/library/ez524kew(VS.80).aspx您无法添加 GAC 的推荐信,那么其他人是如何管理的呢?
- 我尝试将 *C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office11* 中的引用复制到我的项目目录并在那里引用它们。
End If
我想我需要知道的主要事情是如何/是否可以将这些程序集包含在我的出版物中并满足或绕过 GAC 要求。
如果可能,请尝试尽可能直接回答我的具体问题。虽然文章很有帮助,但我已经阅读了很多文章并尝试了很多建议的解决方案,但没有成功。请记住,我对这一切从一开始就如何运作的逻辑缺乏了解。
请原谅我的不理解,并感谢您提供的任何帮助。非常感谢!
您可能想看看 NetOffice 项目:http://netoffice.codeplex.com/.
它是一套免费(MIT 许可证)且完整(所有版本 2000-2010 和所有 Office 应用程序)的独立于版本的互操作程序集。这些程序集是使用工具从实际的 PIA 生成的,因此它们是正确、完整和最新的,并且可能会针对未来版本快速更新。
另一个不错的功能是每个成员的 IntelliSense 显示哪些 Office 版本实现了该成员。
对于部署,您可以使用应用程序复制或安装程序集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)