我在包中做了一个扩展,我调用了下面的代码(当用户按下工具栏中的按钮时发生):
DocumentEvents documentEvents = (DTE2)GetService(typeof(DTE));
_dte.Events.DebuggerEvents.OnEnterBreakMode += DebuggerEvents_OnEnterBreakMode;
_dte.Events.DebuggerEvents.OnEnterDesignMode += DebuggerEvents_OnEnterDesignMode;
_dte.Events.DebuggerEvents.OnContextChanged += DebuggerEvents_OnContextChanged;
_dte.Events.DocumentEvents.DocumentSaved += new _dispDocumentEvents_DocumentSavedEventHandler(DocumentEvents_DocumentSaved);
_dte.Events.DocumentEvents.DocumentOpened += new _dispDocumentEvents_DocumentOpenedEventHandler(DocumentEvents_DocumentOpened);
void DocumentEvents_DocumentOpened(Document Document)
{
}
void DocumentEvents_DocumentSaved(Document Document)
{
}
void DebuggerEvents_OnEnterBreakMode(dbgEventReason Reason, ref dbgExecutionAction ExecutionAction)
{
}
void DebuggerEvents_OnContextChanged(Process NewProcess, Program NewProgram, Thread NewThread, StackFrame NewStackFrame)
{
}
private void DebuggerEvents_OnEnterDesignMode(dbgEventReason reason)
{
}
Run Code Online (Sandbox Code Playgroud)
第一个和主要问题是订阅该事件不起作用.我试过了:
这些似乎都没有任何效果,并且从不调用回调函数.
第二个问题是对事件行的订阅是USUALLY(订阅本身,回调不能像上面描述的那样工作)但是在运行订阅行一段时间之后,例如:
_dte.Events.DebuggerEvents.OnEnterBreakMode -= DebuggerEvents_OnEnterBreakMode;
Run Code Online (Sandbox Code Playgroud)
导致异常:
Exception occured!
System.Runtime.InteropServices.InvalidComObjectException: COM object that has been separated from its underlying RCW …Run Code Online (Sandbox Code Playgroud) 我想在VS2010插件中"模拟"右键单击/更新服务引用命令.我有一个包含(Silverlight ...)项目的引用,我知道服务引用的名称和服务的url.
我发现了这个:http://dedjo.blogspot.com/2007/03/adding-web-references-to-your-vs.html,但它只适用于asmx(它使用System.Web.Services而不是System.ServiceModel),而不是wcf.有什么选择,但从代码调用svcutil?如果是这样,怎么样?(我使用svcutil还是slsvcutil?我如何从插件中调用它?)
谢谢
精氨酸!我有一个运行我的类库项目的自定义"harness"可执行文件.每次我进入线束的代码,我都会弹出"No Source Available"窗格.据我所知,没有可用的资源,并且这是完全可以预期的,我不希望每次都会出现这个非常具有侵入性和无用的窗格.我怎么能完全抑制它呢?
我可以使它变小,至少使该窗口成为另一个较小的窗格集的一部分,例如使用watch/locals.它记得它从一开始到另一个运行的位置,但它仍然无用.
这个问题可能有一个更一般的答案 - 如何抑制任何特定的窗格/窗口显示?我有一个VSX软件包,最初是为VS 2008构建的(并且必须保持兼容性),但我只是不知道要运行什么命令来执行它.(我有包装委托,所以我有源,但不是技术诀窍.这看起来像一个/两个班轮).
谢谢!
string.Format是一种非常危险的方法.有很多东西可能出错,没有任何编译错误:
string.Format("{0{", text);
string.Format("{1}", text);
string.Format("(0)", text);
string.Format("{0}", text1, text2);
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种在编译时找到这个问题的方法.如果我没记错的话,Resharper发现了一些错误,但它对我的血液来说太丰富了.
我正在尝试为VS2017(在C#中)创建扩展VSPackage,它将二进制数据转换为XML,在默认的VS XML编辑器和XML语言服务中打开它,然后在保存时将其转换回二进制.
但是,我有麻烦要确定这需要哪些步骤.在编辑器工厂中创建新编辑器时,我现在想到了以下内容:
现在我的尝试看起来像这样:
private MyPackage _package; // Filled via constructor
private IServiceProvider _serviceProvider; // Filled via SetSite
public int CreateEditorInstance(uint grfCreateDoc, string pszMkDocument, string pszPhysicalView,
IVsHierarchy pvHier, uint itemid, IntPtr punkDocDataExisting, out IntPtr ppunkDocView,
out IntPtr ppunkDocData, out string pbstrEditorCaption, out Guid pguidCmdUI, out int pgrfCDW)
{
// Initialize and validate parameters.
ppunkDocView = IntPtr.Zero;
ppunkDocData = IntPtr.Zero;
pbstrEditorCaption = String.Empty;
pguidCmdUI = Guid.Empty;
pgrfCDW = 0;
VSConstants.CEF createDocFlags = (VSConstants.CEF)grfCreateDoc;
if (!createDocFlags.HasFlag(VSConstants.CEF.OpenFile) && !createDocFlags.HasFlag(VSConstants.CEF.Silent)) …Run Code Online (Sandbox Code Playgroud) c# vsx visual-studio vs-extensibility visual-studio-extensions
1.)"VSIX"项目的"Visual Studio Package"项目有何不同?
2.)哪里可以找到一些初学者指南?
3.)在哪里可以找到Visual Studio 2010的可扩展性模型或扩展点的概述?
提前致谢!
如何将自定义命令添加到键盘对话框(工具 - >选项 - >键盘)以通过快捷方式触发它们?不幸的是,我在网上找不到任何资源.
我浏览了这篇博文,但它略有不同,因为我必须创建一个菜单条目.我只想在键盘对话框中显示命令.就像它与宏一起工作一样.
我正在开发一个自定义的Visual Studio语言服务,并且有几个关于文件扩展名绑定到特定语言服务的方式的问题.
"示例语言"语言的源文件有两个主文件扩展名:.e1和.e2.我的分机有一类ExampleLanguagePackage延伸Package.
当您使用文件→打开命令并选择一个C#文件(例如)时,"打开"按钮有一个下拉箭头,您可以选择"打开方式...".单击该按钮时,将显示"CSharp Editor(默认)","带编码的CSharp Editor"或任何其他选项中打开文件的选项.如何为我的语言提供类似的功能,提供"示例语言(默认)"和"带编码的示例语言"选项?
当您打开工具→选项...→文本编辑器→文件扩展名时,您可以将(例如).foo扩展名绑定到"Microsoft Visual C#"或任何其他几个选项.如何扩展此页面以允许用户定义的文件扩展名与"示例语言"相关联?
注册这些物品时我还应该注意什么?
我想使用Roslyn来分析Razor View中一块C#代码的上下文中的语义信息.
有没有办法(在Visual Studio 2015中,甚至在单元测试中)获得SemanticModel代表此代码的代码?