Получить путь к файлу из редактора Visual Studio - PullRequest
4 голосов
/ 30 декабря 2010

Я разрабатываю пакет Visual Studio, написанный на C #.

Как получить полный путь к активному редактору программно?

Ответы [ 4 ]

3 голосов
/ 12 июня 2015

Вот так вы получите полный путь к сфокусированному (активному) документу в Visual Studio:

DTE dte = (DTE)GetService(typeof(DTE));
string document = dte.ActiveDocument.FullName;
3 голосов
/ 30 декабря 2010

При работе с макросами вы можете использовать

DTE.ActiveDocument.Path + DTE.ActiveDocument.Name

, чтобы получить полный путь.Вероятно, это то же самое в C # при создании пакетов VS?

2 голосов
/ 26 января 2011

У меня была похожая проблема при разработке пользовательских серверных элементов управления ASP.NET Web Forms. Чтобы получить ссылку на объект DTE и создать виртуальный путь к каталогу редактируемого файла, я использовал следующий код внутри моего пользовательского файла управления сервером:

    [Bindable(true)]
    [Category("Behavior")]
    [DefaultValue("")]
    [Editor(typeof(System.Web.UI.Design.UrlEditor), typeof(System.Drawing.Design.UITypeEditor))]
    public string Url
    {
        get
        { 
            object urlObject = ViewState["Url"];
            if (urlObject == null)
            {
                if (DesignMode)
                { 
                    // Get a reference to the Visual Studio IDE
                    EnvDTE.DTE dte = this.Site.GetService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;

                    // Interface for accessing the web application in VS
                    IWebApplication webApplication = (IWebApplication)this.Site.GetService(typeof(IWebApplication));

                    // Path of document being edited (Web form in web application)
                    string activeDocumentPath = dte.ActiveDocument.Path;

                    // Physical path to the web application root
                    string projectPath = webApplication.RootProjectItem.PhysicalPath;

                    // Create virtal path
                    string relativePath = activeDocumentPath.Replace(projectPath, "~\\");

                    return relativePath.Replace('\\','/');
                }
                else
                {
                    return String.Empty;
                }
            }
            else
            {
                return (string)urlObject;
            }
        }
        set
        {
            ViewState["Url"] = value;
        }
    }

Это полезно для быстрого перехода к файлу рядом с редактируемым файлом при использовании UrlEditor

0 голосов
/ 30 декабря 2010

В VS 2010 и 2008 вы щелкаете правой кнопкой мыши вкладку вверху и выбираете «Копировать полный путь» из контекстного меню.Смотрите мое изображение ниже.alt text

...