1

JavaScriptファイルと画像ファイルの右クリックコンテキストメニューを取得するために、VisualStudio用のアドインを開発しようとしています。すべてのプロジェクトアイテムの右クリックにアドインを追加することができました

私が達成したいのは、JavaScriptファイルと画像ファイルでのみアドインを取得することです。このようなもの(注:-現在、すべてのファイルタイプでアドインを取得しています)

以下は私が接続に持っているコードです

 if (connectMode == ext_ConnectMode.ext_cm_UISetup)
        {
            object[] contextGUIDS = new object[] { };
            Commands2 commands = (Commands2)_applicationObject.Commands;
            string toolsMenuName = "Tools";

            //Place the command on the tools menu.
            //Find the MenuBar command bar, which is the top-level command bar holding all the main menu items:
            Microsoft.VisualStudio.CommandBars.CommandBar menuBarCommandBar = ((Microsoft.VisualStudio.CommandBars.CommandBars)_applicationObject.CommandBars)["MenuBar"];

            //Find the Tools command bar on the MenuBar command bar:
            CommandBarControl toolsControl = menuBarCommandBar.Controls[toolsMenuName];
            CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl;

            Microsoft.VisualStudio.CommandBars.CommandBar itemToolBar = ((Microsoft.VisualStudio.CommandBars.CommandBars)_applicationObject.CommandBars)["Item"];

            //This try/catch block can be duplicated if you wish to add multiple commands to be handled by your Add-in,
            //  just make sure you also update the QueryStatus/Exec method to include the new command names.
            try
            {
                //Add a command to the Commands collection:
                Command command = commands.AddNamedCommand2(_addInInstance, "CrmAddin", "CrmAddin", "Executes the command for CrmAddin", true, 59, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported + (int)vsCommandStatus.vsCommandStatusEnabled, (int)vsCommandStyle.vsCommandStylePictAndText, vsCommandControlType.vsCommandControlTypeButton);

                //Add a control for the command to the tools menu:
                if ((command != null) && (toolsPopup != null))
                {
                    command.AddControl(toolsPopup.CommandBar, 1);
                }

                if ((command != null) && (itemToolBar != null))
                {
                    command.AddControl(itemToolBar, 1);
                }
            }
            catch (System.ArgumentException)
            {
                //If we are here, then the exception is probably because a command with that name
                //  already exists. If so there is no need to recreate the command and we can
                //  safely ignore the exception.
            }

このようにQueryStatusメソッドでファイルタイプを除外しようとしましたが、役に立ちません

  if (neededText == vsCommandStatusTextWanted.vsCommandStatusTextWantedNone)
        {
            if (commandName == "CrmAddin.Connect.CrmAddin")
            {
                bool supportedFileTypes = true;
                foreach (Project project in _applicationObject.Solution.Projects)
                {
                    foreach (ProjectItem projectItem in project.ProjectItems)
                    {
                        if (!projectItem.Name.EndsWith(".js"))
                        {
                            supportedFileTypes = false;
                        }
                    }
                }
                if (supportedFileTypes)
                {
                    status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusEnabled;
                }
                else
                {
                    status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported;
                }

                return;
            }
        }

誰かが私を正しい方向に向けることができるなら助けてください。

4

1 に答える 1

2

情報だけです。同様の問題の解決策を探していましたが、これを最初に見つけてから、検索した後、MSDN であなたの質問を見ました (?) http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/c8f35f82- c694-4a6a-8c4a-a8404a4df11f

どちらが答えを与えました:)

于 2012-11-03T19:43:57.027 に答える