一些用户报告说,如果他们通过双击Excel文件启动Excel,则加载项将不会加载.但是,如果他们通过"开始"菜单(或"快速启动"工具栏)打开Excel,则加载项可以正常加载.
一些细节,以防他们帮助:
任何有关原因的想法或如何解决这个问题将不胜感激.
更新:我相信我找到了解决这个问题的方法.
当注册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 …我正在编写一个VS加载项,我需要在成功构建后运行某个方法.我尝试过使用dte.Events.BuildEvents.OnBuildDone但即使构建失败也会发生这种情况.
我应该使用房产或其他活动吗?
我想在Visual Studio 2010中使用带有C#的DTE2对象来获得对当前解决方案的引用.
我首先尝试了以下代码:
var dte = Marshal.GetActiveObject("VisualStudio.DTE.10.0") as EnvDTE80.DTE2;
但是当我打开2个解决方案,并且这个代码在第一个解决方案中时,我得不到对当前解决方案的引用,而是对我加载的最后一个解决方案的引用.我需要当前的解决方案......
在互联网上搜索,我发现以下解决方案如何从VSPackage获取当前的解决方案目录?:
// Get an instance of the currently running Visual Studio IDE
DTE dte = (DTE)GetService(typeof(DTE));
但是当我使用它时,我的dte对象总是为NULL.
那么如何使用C#on .net framework 4.0获取VS2010中当前的解决方案对象?
有时我浪费时间在运行时在对象中搜索值.
当然你 - 都知道这个任务 - >打开QuickWatch视图并浏览属性,直到找到你要找的东西.  
我正在寻找一个工具/加载项/扩展,可以在对象中搜索值.
带有搜索增强功能的QuickWatch视图将是perferct :)
SB.知道一个工具?
谢谢!
我需要帮助
Tools > Add-ins.ThisWorkbook.IsAddin = True.证明问题:
尝试按如下方式遍历工作簿不会使工作簿具有.AddIn = True:
Dim book As Excel.Workbook
For Each book In Application.Workbooks
    Debug.Print book.Name
Next book
通过加载项循环不会获得未注册的加载项:
Dim addin As Excel.AddIn
For Each addin In Application.AddIns
    Debug.Print addin.Name
Next addin
循环通过VBProjects集合可以正常工作,但前提是用户在宏安全设置中具有对Visual Basic项目的特别可信访问权限 - 这很少:
Dim vbproj As Object
For Each vbproj In Application.VBE.VBProjects
    Debug.Print vbproj.Filename
Next vbproj
但是,如果已知工作簿的名称,则无论是否为加载项,都可以直接引用工作簿:
Dim book As Excel.Workbook
Set book = Application.Workbooks("add-in.xla")
但是,如果名称未知,那么如何获取对此工作簿的引用,并且不能依赖用户的宏安全设置?
我正在考虑使用COM(而不是 VBA)实现Excel加载项,它将操作工作表中的数据.
我将需要这个加载项与Undo堆栈无缝集成.进一步来说:
到目前为止,在我的(尽管是敷衍的)研究中,目前还不清楚Excel是否可以允许这样做.如果没有,这是一个showstopper,加载项将没有任何价值.
我的问题:这可能吗?这更像是一个"是或否"的问题,而不是一个"如何"的问题,因为我需要知道我是否正在开始疯狂的追逐.但是,关于如何做到的任何指示都将是一个奖励.
我编写了一个outlook addin,其中包含一些访问webservice并在其上执行方法的基本功能.一切都像魅力一样,除了我似乎无法摆脱用户需要管理员权限来安装此加载项的事实.Google似乎没有真正的解决方案或答案.
是否可以编写一个outlook addin(VSTO),用户可以在不需要管理员权限的情况下安装它?
非常感谢提前!
问题说明了一切.我正在尝试编写一个Visual Studio插件(2012),实验实例总是在没有运行插件的情况下启动.主实例中没有命中断点,实验实例也没有加载插件.
我应该指出:它曾经一次或两次工作,然后我删除了项目,因为我认为这是一个错误的项目,但最终用相同的名称重新创建它.
没有任何摆弄"允许插件加载"或重置实验实例或手动清理注册表修复问题.我也试过寻找我的addin dll,但它不在列表中.我完全没有想法和可能的搜索条件.有什么建议?
add-in visual-studio-addins visual-studio visual-studio-2012
好的,这里有一个为视觉工作室提供了许多方便的小插件的人,或者可以帮助按键序列.
假设我有一个Person类:
class Person
{
    string Name { get; set; }
    int Age { get; set; }
}
我正忙着快乐地编码.我经常遇到需要为该类的所有属性赋值的情况,或者将属性的所有值分配给其他属性.
public override void CopyTo(Person myPerson)
{
    myPerson.Name = "XXX";
    myPerson.Age = 11;
}
我想生成这个部分:
myPerson.Name
myPerson.Age
即只是将myPerson的所有属性转储到一个小列表中.在Visual Studio编辑器中.
我安装了resharper,我快速浏览了一个专门做这个的实用程序,但我找不到一个.有人可以帮忙吗?
我在加载项应用程序中使用async/await遇到问题,我有自定义任务窗格,用户可以用它下载一些数据,所以有问题:
等待操作完成后,控件不会返回到先前的执行上下文.我用windows窗体创建了一个示例并粘贴了相同的方法等待它工作正常 - 我可以在等待操作后使用表单控件,但不是在加载项中,我必须调用自定义任务窗格调用方法.简单的例子:
private void SearchPaneButton_Click(object sender, EventArgs e)
{
    Search();
}
private async void Search()
{
    var searchText = SearchTextBox.Text;
    SearchPaneButton.Text = "Loading…";
    var data = await new DataServiceClient().GetDataAsync(searchText);
    this.Invoke((MethodInvoker)(() =>
    {
        SearchPaneButton.Text = "Search";
        ToggleWorkbookEvents();
    }));
}
在我的加载项中,我需要处理一些事件 - 工作表已更改,工作表已激活/已停用,但这些事件消失,并且在等待操作后未触发,我必须在每次事件后使用"切换"(删除+添加)事件等待使用.简单的例子:
private void ToggleWorkbookEvents()
{
    var excel = Globals.MyAddIn.Application;
    //need to ensure event will not be set twice
    excel.SheetActivate -= CheckSheetForData;
    excel.SheetActivate += CheckSheetForData;
    if (excel.ActiveWorkbook != null)
    {
        var activeSheet = Globals.MyAddIn.GetActiveWorksheet();
        //need to ensure …