【发布时间】:2018-09-16 10:46:17
【问题描述】:
我正在尝试扩展 MS Access 的功能。我希望用户能够从 Access 应用程序中触发此功能,最好是通过单击我介绍的按钮。我希望能够使用 C# 实现此功能。
如果我的目标是 MS Word、Excel、Outlook、PowerPoint、Visio、InfoPath、 或 Project,然后 Visual Studio Tools for Office(请参阅here)将是理想的选择。但是,Access 要么从来没有(正式)成为该计划的一部分,要么是 dropped 在很久以前得到它的官方支持。有一家名为 Add-In Express 的公司似乎支持带有 Access 的 VSTO,用于example,但许可证非常昂贵,如果可以直接完成,我宁愿不涉及第三方软件。 2008 年有一篇带有 hack 的 MS 博客文章,它利用了“VSTO 加载项项目在很大程度上与主机无关的性质”,并将 Word 加载项转换为 Access 加载项。这有一个警告:
但是请注意,我不鼓励人们在生产中使用这种方法——我们没有测试过这种行为,并且明确表示不以任何方式支持它。我所做的是探索如何将 VSTO 设计为最佳地与主机无关,以便插件模型尽可能灵活 - 不会达到旧的“共享”插件提供的松散类型的极端型号。
此方法是针对 this 最近的 SO 问题提出的,并且显然已被提问者成功使用。虽然我担心缺乏官方支持,但这对于原型来说可能就足够了,我已经尝试使用它。
按照步骤 1 到 8 没有任何问题后,我点击调试,MS Access 启动,然后抛出以下错误对话框:
Microsoft Office Customization Installer
There was an error during installation.
Downloading file:///C:/Temp/MyAddIn/bin/Debug/MyAddIn.vsto did not succeed.
Details:
************** Exception Text **************
System.Deployment.Application.DeploymentDownloadException: Downloading
file:///C:/Temp/MyAddIn/bin/Debug/MyAddIn.vsto did not succeed. --->
System.Net.WebException: Could not find a part of the path
'C:\Temp\MyAddIn\bin\Debug\MyAddIn.vsto'. ---> System.Net.WebException:
Could not find a part of the path 'C:\Temp\MyAddIn\bin\Debug\MyAddIn.vsto'.
---> System.IO.DirectoryNotFoundException: Could not find a part of the path
'C:\Temp\MyAddIn\bin\Debug\MyAddIn.vsto'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess
access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize,
FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean
bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
access, FileShare share, Int32 bufferSize, FileOptions options, String
msgPath, Boolean bFromProxy)
at System.Net.FileWebStream..ctor(FileWebRequest request, String path,
FileMode mode, FileAccess access, FileShare sharing, Int32 length, Boolean
async)
at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri,
FileAccess access, Boolean asyncHint)
--- End of inner exception stack trace ---
at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri,
FileAccess access, Boolean asyncHint)
at System.Net.FileWebRequest.GetResponseCallback(Object state)
--- End of inner exception stack trace ---
at System.Net.FileWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.FileWebRequest.GetResponse()
at
System.Deployment.Application.SystemNetDownloader.DownloadSingleFile
(DownloadQueueItem next)
--- End of inner exception stack trace ---
谷歌搜索“vsto 下载文件未成功”给我带来了here,这似乎很相关:
问题是 Office 应用程序正在寻找部署清单 (.vsto) 和应用程序清单 (.dll.manifest) 并且无法找到它们。
我在我的机器上搜索了一个 vsto 文件扩展名,发现唯一的一个在我的 VS 解决方案文件夹中。所以我想也许博客方法中的第 6 步是错误的,最后一行应该替换为这个 vsto 文件的路径。然而,这似乎不是问题。
然后我发现这个 MSDN article 解决常见 VSTO 问题和常见错误 4 是匹配的。列出的“解决方案”是:
当 VSTO 解决方案尝试从域控制器获取证书信息(发布者名称和其他数据)并超时时,通常会出现此问题。要解决此问题,请安装此修补程序:- KB 981574。
这链接here这是一个标题为页面
当您尝试在安装了 .NET Framework 3.5 SP1 的计算机上启动 Excel 时,启动屏幕的打开时间比平时长
这似乎完全无关。这是一个断开的链接吗?我不确定如何进行。
【问题讨论】:
-
“这个”已经烂掉了(?),你可以通过检查来发现。至于dosc:例如,使用Visual Studio 2010 Standard,您可以为Office 2000到2016构建一个插件。
-
谢谢古斯塔夫。我不应该假设。在进行更多研究后,“这”似乎是一家销售这项技术的公司。我想知道是否有办法在不使用第三方的情况下做到这一点。我在这方面取得了进展,然后遇到了另一个障碍,现在已经对问题进行了重大编辑。它仍然符合标题,因此我将其保留为编辑而不是新问题。
-
好的,到目前为止我还没有阅读。我已投票支持重新讨论该问题。我第一次这样做,所以我不知道结果如何......
-
感谢古斯塔夫的投票。
标签: c# visual-studio ms-access plugins office-addins