在“工具”菜单下的 Visual Studio 中,“NuGet 包管理器”->“管理解决方案的 NuGet 包...”和“扩展和更新...”之间有什么区别?
是否可以在 Visual Studio 2017 sdk 中拦截项目保存事件?
更新
我目前正在开发 Visual Studio 2017 的扩展,我需要知道何时保留任何更改。
例如:当我在项目中添加新引用时(我知道添加/更改/删除引用但不满足我的需要时会发生事件),该项目被标记为待保存。我需要在保存时拦截它(如果在保存之前拦截就更好了)。
我尝试了该Dte.Events.DocumentEvents.DocumentSaved事件,但在保存项目中没有触发;DTE.Events.SolutionEvents和DTE.Events.SolutionItemEvents没有我需要的类型的事件。
有可能的?
visual-studio-sdk visual-studio-extensions visual-studio-2017
我想在VS的文本编辑器中添加一些按钮。在创建 ViewPort 管理器时的 ViewPortTextViewCreationListener 中,我想知道文档或其路径
public void TextViewCreated(IWpfTextView textView) {
var result = _textDocumentFactoryService.TryGetTextDocument(TextView.TextBuffer, out ITextDocument textDocument);
new ViewPortSwitcher(textView);
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用从 TextBufferITextDocumentFactoryService获取(请参阅此处的答案)。如果我打开 cs 文件,它可以正常工作。但如果我打开 cshtml 文件 TryGetTextDocument 返回 false。ITextDocument
我的 C 盘空间有问题。我发现大型 (~300 [MB]) Visual Studio 扩展 (vsix) 文件每天(完全在同一时间)登陆 C:\Windows\Temp,有时每天多次登陆。我不是在创造这些。我能够删除现有的,为我争取一些时间。但是,我想确定正在创建这些东西的程序/脚本,以便我可以将其关闭。我该怎么办?
我想创建扩展,当我将鼠标悬停在文本上时,该扩展允许显示自定义消息。
例如,“test-text”应该给出工具提示“OK”,而不是当前的“ITrackin...”
我试图遵循https://learn.microsoft.com/en-us/visualstudio/extensibility/walkthrough-displaying-quickinfo-tooltips?view=vs-2019 但人们说它不起作用,而且还有很长的路要走做这个。
我创建了一个代表 Visual Studio 项目向导(vsix 包)的 Visual Studio 扩展。我正在尝试连接 log4net,但没有成功。我已将问题归结为 app.config 未正确加载。
我已将其添加到我的 Visual Studio 扩展中的 app.config 中:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="test" value="hello world"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
在我的 IWizard 实现中,我添加了这行代码:
var test = System.Configuration.ConfigurationManager.AppSettings["test"];
Run Code Online (Sandbox Code Playgroud)
然而,test调试时上面的变量始终为空。
我已经验证了这些事情:
C:\Users\<user>\AppData\Local\Microsoft\VisualStudio\16.0_...\Extensions\<Name>\<Company>\1.0文件夹中我缺少什么?如果 VSIX 扩展开发中不允许使用 App.config,那么您将如何连接 log4net?
我正在开发一个 VSIX 项目,我想获取正在 VS IDE(或实验窗口)中编辑的当前文件名和路径(相对于该项目)?我怎样才能做到这一点?
我尝试了以下代码:
var currentDocInfo = this._textDocumentFactoryService.TryGetTextDocument(this.view.TextBuffer, out this.TextDocument);
if (currentDocInfo)
{
string test = this.TextDocument.FilePath;
MessageBox.Show(test);
}
else
{
//MessageBox.Show("Nothingg!");
}
Run Code Online (Sandbox Code Playgroud)
此代码返回当前打开文件的绝对路径。我需要获取相对于当前项目/解决方案的路径。如果我能够获得解决方案的名称,我将找到该项目的相对路径。
如果我添加代码:System.IO.Path.GetDirectoryName(dte.Solution.FullName);
它将返回我的 TextAdornment 类(一个类,通过安装整个插件来管理编辑器任务,这里我正在编写 dte.ActiveDocument.FullName; 代码)的路径详细信息。但我想要在我的实验窗口中打开的文件的文件详细信息。
c# extensibility visual-studio vsix visual-studio-extensions
我正在编写一个 Visual Studio 扩展,我想为我自己的文件类型实现 Ctrl + 单击命令。这类似于 C#/C++ 编辑器,其中 Ctrl + 单击类型名称会将用户带到该类型的定义(也称为“转到定义”命令。)
有关于如何实现这一目标的示例吗?我在 Microsoft Docs 网站上搜索,但找不到任何我想要的内容。
基本上,我需要Visual Studio包项目文件中的正确值guid和id属性.vsct,如:
<Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
Run Code Online (Sandbox Code Playgroud)
以上内容直接来自默认项目模板,并向Tools主菜单添加命令.我在哪里可以找到(或我如何嗅探)ADO.NET实体数据模型设计器上下文菜单的guid:id值,具有"从数据库更新模型......"等等?
在您提出问题之前:VS 2010实体设计器中的MEF可扩展性选项不包括我的场景 - 我需要实现一个命令来在独立和FK映射关联之间进行转换.
visual-studio-2010 ado.net-entity-data-model vspackage visual-studio-extensions
我写了一个visual studio扩展包,它订阅了DebuggerEvents.OnEnterBreakMode事件.但是这个事件永远不会被提升.
这是一些代码:
protected override void Initialize()
{
base.Initialize();
applicationObject = (DTE2) GetService(typeof (DTE));
applicationObject.Events.BuildEvents.OnBuildDone += BuildEventsOnOnBuildDone;
applicationObject.Events.DebuggerEvents.OnEnterBreakMode += DebuggerEventsOnOnEnterBreakMode;
}
Run Code Online (Sandbox Code Playgroud)
但方法DebuggerEventsOnOnEnterBreakMode永远不会被调用.BuildEventsOnOnBuildDone调用方法.
为什么会这样?
c# visual-studio visual-studio-debugging visual-studio-extensions