Tag: vsto

多DPI系统上的VSTO自定义任务窗口显示内容两次

我正在使用VSTO构建办公室插件。 在具有不同DPI设置的多个监视器的系统上,我的自定义任务窗格的内容在具有较高DPI设置的监视器上绘制两次: 只有较小的版本实际上响应用户输入。 较大的版本似乎只是一个放大图像。 我尝试过使用各种DPI相关设置,例如: 我的用户控件上的AutoScaleMode 。 我尝试了所有选项,没有变化。 使用SetProcessDpiAwareness将进程设置为DPI可识别 – 或不 – 。 我尝试了所有选项,没有变化。 使用app.manifest并将dpiAware设置为true和false 。 没变。 新的Web Addins没有这个问题。 此外,内部任务窗格没有此问题。 这是一个已知的问题吗? 我怎样才能解决这个问题?

在运行时将项添加到RibbonDropDown

所以我在function区中有一个下拉菜单,其内容可以在使用时更改。 只要我不添加超过1个项目,Outlook也很乐意让我“添加”或“插入”项目。 如果我尝试,我会被告知索引超出界限而不是扩大我的上限。 我发现如果我将它插入到代码的设计器部分的集合中,它将正常工作,但设计器代码只运行一次,除非我处理function区并重新创建它。 关于如何让这个工作的任何想法

钩子事件Outlook VSTO在主线程上继续工作

我开发了一个Outlook VSTO插件。 有些任务应该在后台线程上完成。 通常,检查本地数据库中的某些内容或调用Web请求。 在阅读了几篇文章之后,我放弃了在后台线程中调用Outlook对象模型(OOM)的想法。 我有一些wpf控件,我成功地设法使用.NET 40 TPL执行异步任务,并在完成时“完成”主VSTA线程中的作业(即访问UI或OOM)。 为此,我使用以下forms的语法: Task task = Task.Factory.StartNew(()=>{ //Do long tasks that have nothing to do with UI or OOM return SomeResult(); }); //now I need to access the OOM task.ContinueWith((Task tsk) =>{ //Do something clever using SomeResult that uses the OOM },TaskScheduler.FromCurrentSynchronizationContext()); 到现在为止还挺好。 但是现在我想在OOM中挂钩没有Form / WPF控件的事件时做类似的事情。 确切地说,我的问题来自于TaskScheduler.FromCurrentSynchronizationContext()抛出exception的事实。 例如, Items […]

清除Microsoft Office加载项缓存

我在Microsoft PowerPoint 2007的加载项中编写了一些代码。我执行了它。 它说有问题。 在这里的同事的帮助下 ,我纠正了这个问题。 我编译了新代码并运行它。 它仍然考虑旧代码并忽略新代码并仍然抛出相同的问题。 这两个版本的代码完全不同,因为它们不共享问题报告的变量,因此我确定问题现在不在代码中。 显然,MS Office在某些缓存中保留了旧版本的二进制文件。 如何清除它并允许它访问新编译的加载项二进制文件?

保存并打开远程文档

我对微软Office开发一无所知,但我想构建一个插件原型,允许用户从远程存储库中保存和打开文档。 也许以后可能会在服务器上构建一个版本控制系统 – 但是服务器端部分是关于它的最简单部分(在我的例子中)。 也许我应该专注于让它一次用于一个办公应用程序 – 比如MS WOrd(除非人们认为excel更容易使用)。 并让我们以Office 2007为目标(就像我安装的那样)。 保存 存储库将存储Tagged文档(许多类型的许多标签)。 保存文档AddIn需要先显示对话框并允许标记。 AddIn需要通过SOAP或REST api向我们的服务器提交一个标签数组和文档(Base 64编码?)。 几个问题 这可能吗? 如果有关于如何实现的建议? 是否有一种机制可以访问您正在查看的文档的二进制数据(流?)? 是否有可能从File-SaveAs对话中捎回来? 或者我需要创建自己的菜单项吗? Obviuos前者可能更熟悉用户…… 是否已经存在远程文档持久性的机制我可以背负? 开盘 一旦保存了许多文件,我们将需要一种检索文件/打开文件的方法。 所以我认为我需要一个对话框,允许浏览文件标签类型 – >标签值(树可能有更多级别,但想从那里开始)。 ONce文件打开我认为API需要 进行RPC调用(SOAP / REST)以检索文档 – 解码内容(实际文档)并在Word中打开该流(例如) 我还想将我的标签保存在内存中 XML设计 为了最好地可视化Word和服务器之间交换的数据,可以设想一个XML结构,如: New York Yankees Boston Redsox New York Boston recap AKJSGHKASHGFKSJDHGFKSJDHGFSKDJFHGSKJDGSKDJGSKDJFHGSDKJFH 存储库资源管理器应该在树中的多个位置显示此文档; 以下是一个存储库的示例,该存储库在五个位置显示此文档(基于标记): repository + untagged – team […]

VSTOunit testing通过RequestComAddInAutomationService在C#.NET中添加Office

在过去的几周里,我一直在阅读各种StackOverflow问题和其他教程和文档(下面注意其中一些),试图找到一种unit testingVSTO AddIn的方法。 不幸的是,它总是在我的测试中导致E_NOINTERFACEexception。 我正在使用的代码如下 – 覆盖RequestComAddinAutomationService的ThisAddin部分类的一个提取,另一个描述测试实用程序接口的提取,测试本身,以及另一个程序集提取,certificateAddIn程序集及其内部对测试可见。 我的问题是 :为什么这不起作用? 我很确定这遵循VSTO测试的普遍接受的做法。 如果以下不再可能,那么应该如何测试VSTO? .NET remoting / IPC是唯一的解决方案吗? ThisAddin.cs public partial class ThisAddin { #region Testing Utilities private AddinHelper _comAddinObject; protected override object RequestComAddInAutomationService() { // This is being called when I debug/run my project, but not when I run the tests return _comAddinObject ?? (_comAddinObject = new […]

Outlook VSTOfunction区到主页tabControlId

我正在写一个VSTO Microsoft Outlook插件。 该插件的版本目标是Outlook 2007和2010,因此我使用Outlook 2007加载项(在Visual Studio中)。 我有ActiveMenuBar的一些(视觉)问题。 在Outlook 2007中,它工作正常,但在2010年,ActiveMenuBar不存在; 它被tabControl和ribbon替换。 我想检查版本( Application.Version ),如果版本是14(Outlook 2010),则不要在ActiveMenuBar中添加项目,而是在Home标签页中添加function区。 如何将function区添加到“ 主页”选项卡页面? 例如,如果我将一个function区添加到“ 消息”选项卡页面,我将ribbonControl.OfficeId设置为“TabReadMessage”,但我找不到“ 主页”选项卡的OfficeId。

OneNote VSTO走了吗?

我想创建一个与OneNote附加组件相关的项目,但是当我检查项目模板时,我没有看到OneNote 2013附加组件的项目模板。 有没有办法可以为OneNote开发一个附加组件,因为Microsoft将其从VSTO中删除了?

VSTO问题 – 无法创建visual studio excel工作簿项目

当我尝试创建Excel 2007工作簿项目时,在Visual Studio 2008中,我得到以下错误消息: 无法创建项目,因为“Excel Visual Studio设计时适配器加载项”无法正常工作。 Excel可能已禁用该加载项或使其处于非活动状态,或者您的信任中心设置中可能禁用了所有加载项。 在Excel选项中检查加载项状态。 如果加载项处于活动状态并已启用,请重新安装或修复Visual Studio Tools for Office。 我已经validation加载项未处于非活动状态或已禁用,我已尝试多次修复和卸载/重新安装VSTO。 该怎么办?

VSTO Outlook插件需要保存设置,最好的方法?

我正在写一个VSTO Outlook添加,我需要保存插件从Web服务获得的一些设置。 做这个的最好方式是什么。 注册? VSTO插件是否可以完全访问这样的操作? 也许包含设置的文件? 提前致谢。