SORU
8 Aralık 2008, PAZARTESİ


Açık bir satır belirli bir sayıda Visual Studio dosyası

Bana dosya isimleri ve satır numaraları listesi veren bir yardımcı program (grep). Devenv doğru bir program dosyasını açmak için olduğunu belirledim sonra, belirtilen satır numarası açıldı olduğundan emin olmak istiyorum. Emacs, bu olabilir:

emacs  140 filename.c

Visual Studio (devenv) için böyle bir şey buldum. Buldum en yakın

devenv /Command "Edit.Goto 140" filename.c

Ancak, bu her tür dosya için devenv ayrı bir kopyasını yapar. Varolan bir örneğini kullanan bir şeyi tercih ederim.

Bu yeniden kullanım varolan bir devenv varyasyonlar, ancak, belirtilen hat gitme:

devenv /Command "Edit.Goto 140" /Edit filename.c
devenv /Command  /Edit filename.c "Edit.Goto 140"

Düşündüğüm kullanarak birden fazla "/Komut" tartışmalar olabilir, ama muhtemelen yok doğru çünkü ben de hatalar ya da hiç cevap başka bir açılış boş devenv).

Devenv için özel bir makro yazabilirim, ama bu yarar bir makro yok mu bunun başkaları tarafından kullanılmasını istiyorum. Ve bu makro çağırmak için nasıl clear "/Komut" seçeneğini değilim.

Herhangi bir fikir?


Evet, istedim bunu yapmak için bir yol var gibi görünmüyor. Visual Studio başlangıç kodu ayrılmış olması gerekiyor gibi görünüyor bu yana, aşağıda gösterildiği gibi EnvDTE kullanmaya karar verdim. Umarım bu başkası yardımcı olacaktır.

#include "stdafx.h"

//-----------------------------------------------------------------------
// This code is blatently stolen from http://benbuck.com/archives/13
//
// This is from the blog of somebody called "BenBuck" for which there
// seems to be no information.
//-----------------------------------------------------------------------

// import EnvDTE
#pragma warning(disable : 4278)
#pragma warning(disable : 4146)
#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids
#pragma warning(default : 4146)
#pragma warning(default : 4278)

bool visual_studio_open_file(char const *filename, unsigned int line)
{
    HRESULT result;
    CLSID clsid;
    result = ::CLSIDFromProgID(L"VisualStudio.DTE", &clsid);
    if (FAILED(result))
        return false;

    CComPtr<IUnknown> punk;
    result = ::GetActiveObject(clsid, NULL, &punk);
    if (FAILED(result))
        return false;

    CComPtr<EnvDTE::_DTE> DTE;
    DTE = punk;

    CComPtr<EnvDTE::ItemOperations> item_ops;
    result = DTE->get_ItemOperations(&item_ops);
    if (FAILED(result))
        return false;

    CComBSTR bstrFileName(filename);
    CComBSTR bstrKind(EnvDTE::vsViewKindTextView);
    CComPtr<EnvDTE::Window> window;
    result = item_ops->OpenFile(bstrFileName, bstrKind, &window);
    if (FAILED(result))
        return false;

    CComPtr<EnvDTE::Document> doc;
    result = DTE->get_ActiveDocument(&doc);
    if (FAILED(result))
        return false;

    CComPtr<IDispatch> selection_dispatch;
    result = doc->get_Selection(&selection_dispatch);
    if (FAILED(result))
        return false;

    CComPtr<EnvDTE::TextSelection> selection;
    result = selection_dispatch->QueryInterface(&selection);
    if (FAILED(result))
        return false;

    result = selection->GotoLine(line, TRUE);
    if (FAILED(result))
        return false;

    return true;
}

CEVAP
9 EYLÜL 2010, PERŞEMBE


VS2008 ileSP1aşağıdaki komutu varolan bir örnek: belirli bir satır bir dosyayı açmak için kullanabilirsiniz

devenv /edit FILE_PATH /command "edit.goto FILE_LINE"

Source

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • SRC RECORDS

    SRC RECORDS

    2 EKİM 2006
  • Warner Bros. UK

    Warner Bros.

    6 HAZİRAN 2008
  • William Sledd

    William Sled

    24 EYLÜL 2006