Очень хочется написать add-in к vs что бы контекстное меню на файле проекта (определённого типа) соддержало свой, дополнительный пунктик, что бы потом, с этим файлом, можно было бы что то сделать.
Может кто нибудь знает как это делается, или хотя бы где можно найти информацию по этому вопросу.
Здравствуйте Dioran, Вы писали:
D>Доброе время суток!
D>Очень хочется написать add-in к vs что бы контекстное меню на файле проекта (определённого типа) соддержало свой, дополнительный пунктик, что бы потом, с этим файлом, можно было бы что то сделать.
D>Может кто нибудь знает как это делается, или хотя бы где можно найти информацию по этому вопросу.
D>Заранее спасибо.
Я бы тоже посмотрел информация оп расширениям Visual Studio и созданию своих шаблонов проектов. Если кто увидит, киньте в меня ссылкой
Это всё конечно хорошо. Только в том примере что там приведён, разбираться и разбираться, к тому, же не понятно, можно ли будет на основании того примера сделать то, что я хотел... Может где есть пошаговое объяснение что надо делать? Или статья какая на эту тему?
O$>>http://www.microsoft.com/rus/msdn/magazine/archive/special_1/studio_net.asp
D>Это всё конечно хорошо. Только в том примере что там приведён, разбираться и разбираться, к тому, же не понятно, можно ли будет на основании того примера сделать то, что я хотел... Может где есть пошаговое объяснение что надо делать? Или статья какая на эту тему?
Здравствуйте Dioran, Вы писали:
D>Доброе время суток!
D>Очень хочется написать add-in к vs что бы контекстное меню на файле проекта (определённого типа) соддержало свой, дополнительный пунктик, что бы потом, с этим файлом, можно было бы что то сделать.
D>Может кто нибудь знает как это делается, или хотя бы где можно найти информацию по этому вопросу.
D>Заранее спасибо.
Вот простейший пример, который создает команду в контекстном меню для файла в солюшен эксплорере. Желательно
сначало создать проект Other Projects/Extensibility Project/Visual Studio.NET Add-in.
using System;
using System.Diagnostics;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using EnvDTE;
using Extensibility;
using Microsoft.Office.Core;
namespace MyAddin1
{
[GuidAttribute("19F6C50D-22A4-42E0-8B35-36165B1B0405"), ProgId("ExpAddin.Connect")]
public class Connect : IDTExtensibility2, IDTCommandTarget
{
private _DTE dte;
private AddIn addInInstance;
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode,
object addInInst, ref System.Array custom)
{
try
{
dte = (_DTE)application;
addInInstance = (AddIn)addInInst;
if(connectMode == Extensibility.ext_ConnectMode.ext_cm_UISetup)
{
// Clean up first.foreach(Command c in dte.Commands)
{
if(c.Name != null && c.Name.StartsWith("ExpAddin.Connect"))
{
c.Delete();
}
}
object[] contextGUIDS = new Object[]{};
Commands commands = dte.Commands;
_CommandBars commandBars = dte.CommandBars;
Command command = commands.AddNamedCommand(
addInInstance,
"TestCommand",
"Test Command",
"Executes the command for Addin",
true,
59,
ref contextGUIDS,
(int)vsCommandStatus.vsCommandStatusEnabled | (int)vsCommandStatus.vsCommandStatusSupported);
CommandBar commandBar = (CommandBar)commandBars["Item"];
CommandBarControl commandBarControl = command.AddControl(commandBar, 1);
}
}
catch(Exception ex)
{
MessageBox.Show("Exception: " + ex);
}
}
public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom)
{
}
public void OnAddInsUpdate(ref System.Array custom)
{
}
public void OnStartupComplete(ref System.Array custom)
{
}
public void OnBeginShutdown(ref System.Array custom)
{
}
public void QueryStatus(string commandName, EnvDTE.vsCommandStatusTextWanted neededText, ref EnvDTE.vsCommandStatus status, ref object commandText)
{
if(neededText == EnvDTE.vsCommandStatusTextWanted.vsCommandStatusTextWantedNone)
{
status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported|vsCommandStatus.vsCommandStatusEnabled;
}
}
public void Exec(string commandName, EnvDTE.vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
{
try
{
handled = false;
if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
{
// Do something.
MessageBox.Show("Hello!");
handled = true;
return;
}
}
catch(Exception ex)
{
MessageBox.Show("exception " + ex);
}
}
}
}
Здравствуйте, Dioran, Вы писали:
D>Здравствуйте, MaxMP, Вы писали:
MMP>> CommandBar commandBar = (CommandBar)commandBars["Item"];
D>Я сделал список всех существующих CommandBar (типа ["Item"]). D>Где нибудь можно узнать что они означают?