标签: add-in

您使用什么Visual Studio加载项?

我安装了以下内容:

add-in visual-studio

10
推荐指数
1
解决办法
1333
查看次数

通过打开文件启动Excel时,不会加载Excel的COM加载项

一些用户报告说,如果他们通过双击Excel文件启动Excel,则加载项将不会加载.但是,如果他们通过"开始"菜单(或"快速启动"工具栏)打开Excel,则加载项可以正常加载.

一些细节,以防他们帮助:

  • 它是一个用VB6编写的COM加载项.
  • 在Windows XP/Excel 2003和Vista/Excel 2007系统上已报告此问题.
  • 加载项实现IDTExtensibility2.
  • 启动模式设置为"启动时加载".

任何有关原因的想法或如何解决这个问题将不胜感激.

更新:我相信我找到了解决这个问题的方法.

当注册IDTExtensibility2 dll时,它会自动为加载行为,加载项名称等创建HKCU条目.但是我也让我的安装文件注册了HKLM的加载项,以便所有用户都可以使用它.机.这导致系统上的双重注册表项.

我不认为这会是问题的原因.我手动编辑了HKCU条目,Excel似乎忽略了它们并遵循HKLM条目.但是,我收到另一位开发人员的提示,解释他们遇到了同样的问题,他们的解决方案是删除重复的注册表项.我试过了,似乎已经解决了报告这个bug的(极少数)人的问题.

下面的Inno设置代码将添加HKLM条目,仔细检查加载行为是否正确(因为我是偏执狂),然后删除HKCU条目.在您看到所有大写字母的任何地方替换您的文件属性.

[Registry]
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; Flags: uninsdeletekey
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: FriendlyName; ValueData: ADDIN_NAME
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: Description; ValueData: ADDIN_DESC
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: dword; ValueName: LoadBehavior; ValueData: 3
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: dword; ValueName: CommandLineSafe; ValueData: 0


// Set load behavior to on start up
procedure ResetAddinRegKeys();
var
  bUpdate : Boolean;
  LoadBehaviorKey : Cardinal;

begin …
Run Code Online (Sandbox Code Playgroud)

vb6 com excel add-in

10
推荐指数
1
解决办法
5万
查看次数

如何在成功构建完成后获得通知?

我正在编写一个VS加载项,我需要在成功构建后运行某个方法.我尝试过使用dte.Events.BuildEvents.OnBuildDone但即使构建失败也会发生这种情况.

我应该使用房产或其他活动吗?

add-in build visual-studio envdte

10
推荐指数
2
解决办法
2636
查看次数

在Visual C#2010中获取DTE2对象的引用

我想在Visual Studio 2010中使用带有C#的DTE2对象来获得对当前解决方案的引用.

我首先尝试了以下代码:

var dte = Marshal.GetActiveObject("VisualStudio.DTE.10.0") as EnvDTE80.DTE2;
Run Code Online (Sandbox Code Playgroud)

但是当我打开2个解决方案,并且这个代码在第一个解决方案中时,我得不到对当前解决方案的引用,而是对我加载的最后一个解决方案的引用.我需要当前的解决方案......

在互联网上搜索,我发现以下解决方案如何从VSPackage获取当前的解决方案目录?:

// Get an instance of the currently running Visual Studio IDE
DTE dte = (DTE)GetService(typeof(DTE));
Run Code Online (Sandbox Code Playgroud)

但是当我使用它时,我的dte对象总是为NULL.

那么如何使用C#on .net framework 4.0获取VS2010中当前的解决方案对象?

c# add-in visual-studio-2010 envdte

10
推荐指数
2
解决办法
8833
查看次数

在运行时搜索对象中的值[QuickWatch增强]

有时我浪费时间在运行时在对象中搜索值.
当然你 - 都知道这个任务 - >打开QuickWatch视图并浏览属性,直到找到你要找的东西.

我正在寻找一个工具/加载项/扩展,可以在对象中搜索值.
带有搜索增强功能的QuickWatch视图将是perferct :)

SB.知道一个工具?

谢谢!

.net c# debugging add-in

10
推荐指数
1
解决办法
3036
查看次数

如何根据声明顺序对方法实现进行排序

是否有任何Visual Studio 2008加载项或宏来根据.h文件中声明的顺序对.cpp文件中的方法实现进行排序?编辑:任何最近的Visual Studio(2010年,2013年,2015年,2017年)

c++ add-in visual-studio

10
推荐指数
1
解决办法
1690
查看次数

删除SQL Server Management Studio的加载项

我安装了SQL Server 2008 R2.

过去我安装了Redgate Sql Promprt 5加载项.它不再起作用,但我仍然在SQL Management Studio中有菜单.

我没有在Windows 7 的程序和功能列表中看到加载项,因此我无法卸载它.当我点击菜单中的命令时,我收到以下消息:

无法加载支持此命令的加载项.你想删除命令吗?

当我选择"是"时,它仅从菜单中删除所选命令.

我想从Management Studio中完全删除加载项.

我在哪里可以找到加载项以及在哪里可以在Management Studio 2008 R2中配置它们?

如果我需要删除一些文件来摆脱它,我在哪里可以找到这些文件?我查看了安装文件夹,但没有找到任何关于加载项的信息......

add-in ssms sql-server-2008-r2

10
推荐指数
2
解决办法
2万
查看次数

将Excel 2010插件转换为2007插件(均为VSTO)

我目前正在使用Excel 2010加载项,以前是Excel 2007加载项.在切换计算机的过程中,我认为加载项已被转换.

我的一些客户表示加载项不再适用于Excel 2007,因此我尝试在安装了Excel 2007和Visual Studio 2010的VirtualBox中对其进行调试.

现在我收到错误信息:

您无法调试或运行此项目,因为未安装所需的Microsft Office应用程序版本.

我开始了一个新的Excel 2007加载项目,并尝试找出差异是什么,并想出它与dll有点关系,所以我改变了我的2010插件,直到它看起来像2007插件.

我仍然收到错误消息,指出我的项目无法调试.

有什么我可以忘记改变的吗?

遗憾的是,编写一个全新的插件不是一种选择.

到目前为止,这些问题对我没有帮助:

  1. 适用于Excel 2007和2010的Excel Addin
  2. 部署Office 2010插件

c# vsto add-in excel-2007 excel-2010

10
推荐指数
2
解决办法
4060
查看次数

如何将C#类公开给文档级外接程序中的VBA模块?

这是一个假设的情况.

我想知道是否可以在文档级外接程序中将C#类公开给VBA.

这是一个SSCCE:

在VS PRO 2012中,我启动了一个新项目,选择Office - > Excel 2010 Workbook.(确保选择.Net framework ver 4)

我已经DateTimePicker向Sheet1 添加了一个控件.

我可以在C#解决方案中设置/获取.Value属性DateTimePicker而不会出现问题.

在调试时:在VBA中,.Value属性不会公开.(试过.OLEFormat.Object.Value)

在此输入图像描述

并非所有属性都可以暴露给VBA,因为ActiveX控件DateTimePicker被包装,MSForms因此Excel可以识别它(兼容性).

我需要能够从VBA获取包装控件的实际值,但我不确定如何去做(无论是否可能)......

我知道控件本身支持事件,但这不是我想要的路径.我希望能够从控件中获取静态/当前值.


这是我希望能够做到的:

  • 在我的C#解决方案中添加一个类

  • 暴露它,所以它可以从VBA中恢复过来 Dim obj as new MyExposedClass

  • 然后在C#中显示MyExposedClass商店参考DateTimePicker(所有可用的属性)

  • 然后我可以定义一个GetValue(string controlName)从C#POV返回值的函数


所以我发现这个解决方案 +(这个)似乎与应用程序级外接程序一起使用,但它不适用于文档级外接程序.

当我调试我的解决方案并打开VBA的对象浏览器时,我可以看到引用被自动添加到Microsoft Visual Studio 2008 Tools …

c# vba vsto add-in office-interop

10
推荐指数
1
解决办法
2031
查看次数

将Rest API中的图像内容插入Microsoft Word中当前打开的文档

编辑:此问题的文本已更改为反映利用开放的xml代码和互操作.

我试图通过功能区将基本64位编码的图像插入Word文档.以下代码用于复制目的:

   public partial class Ribbon1
    {
        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
        {
        }

        private void InsertPicture_Click(object sender, RibbonControlEventArgs e)
        {
            Word.Application wordApp = null;
            Word.Document currentDocument = null;
            Word.ContentControls controls = null;
            try
            {
                wordApp = (Word.Application) Marshal.GetActiveObject("Word.Application");
                currentDocument = wordApp.ActiveDocument;
                controls = currentDocument.ContentControls;

                currentDocument.Range().InsertXML(@"<pkg:package xmlns:pkg=""http://schemas.microsoft.com/office/2006/xmlPackage"">
  <pkg:part pkg:name=""/word/media/image1.png"" pkg:contentType=""image/png"" pkg:compression=""store"">
    <pkg:binaryData>iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAIA
      AADdHiL1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAVSURBVChTY3gro0IqGtUz3PTIqAAAlO/H4+qBWxcAAAAASUVORK5CYII=</pkg:binaryData>
  </pkg:part></pkg:package>");
                object tr = true;
                object fa = false;
            }
            catch(Exception ex)
            {
                wordApp.ActiveDocument.Range().InsertAfter(ex.Message);
            }
            finally
            {
                if (controls != null) Marshal.ReleaseComObject(controls); controls = null;
                if …
Run Code Online (Sandbox Code Playgroud)

c# add-in ms-word openxml office-interop

10
推荐指数
1
解决办法
188
查看次数