【发布时间】:2010-11-17 09:39:00
【问题描述】:
我有一个在 Visual Studio 2005 中开发的应用程序,我正在使用 ClickOnce 进行部署。我的解决方案包含两个项目——一个用 VB 编码的用户界面层和一个用 C# 编码的类库。我的 C# 类库有一些代码使用 Outlook 和 Excel 互操作程序集(Microsoft.Office.Interop.Outlook 和 Microsoft.Office.Interop.Excel,均为 11 版)。这是我的问题。
- 虽然我还没有发现这是绝对的,但我的理解是,您必须拥有适当版本的 Office 应用程序 (Outlook/Excel) 才能安装使用互操作程序集的应用程序。这是正确的吗?
如果 (1. = 是) 那么
如果您的应用程序仅将 Interop 程序集用于几个功能,而这些功能将仅被总用户群中的一小部分人使用,您将如何处理这种情况?如果只有部分用户需要使用这些功能,为什么我必须要求我的应用程序的每个用户都安装 Microsoft Office?这些互操作程序集只是 .dll 文件,因此它们与其他文件的不同之处在于,您不能只将文件与您的项目一起发布并满足参考,而不管安装了什么软件客户端? (显然,我对 GAC 及其对 Visual Studio 行为的影响知之甚少。)我很乐意编写自己的代码来检查是否存在使用它们的少数功能所需的 Office 软件。没有 Office,无法访问功能...
否则
如果我对此的理解不正确,那么如何设置我的引用和 ClickOnce 设置,以便用户在尝试安装时不会遇到以下错误?
“无法安装或运行该应用程序。该应用程序要求先在全局程序集缓存 (GAC) 中安装 Assembly Office 版本 11.0.0.0。
请联系您的系统管理员。”
- 我尝试将我的 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* 复制到我的项目目录并在那里引用它们。
如果结束
我想我需要知道的主要事情是我如何/是否可以在我的出版物中包含这些程序集并满足或绕过 GAC 要求。
请尽可能直接回答我的具体问题。虽然文章很有帮助,但我已经阅读了很多文章并尝试了很多建议的解决方案,但都没有成功。请记住,我对这一切如何运作的后勤工作缺乏了解。
请原谅我的不理解,感谢您提供的任何帮助。非常感谢!
【问题讨论】:
标签: excel visual-studio-2005 interop outlook global-assembly-cache