我正在通过VSPackage为Visual Studio开发语言服务.每当从解决方案的项目中添加/删除文件时,我都需要更新我的解析数据.
我想订阅解决方案和项目活动.
我尝试如下,但是当我向解决方案添加/删除项目或向项目添加/删除项目时,这些事件都不会被触发.
DTE dte = (DTE)languageService.GetService(typeof(DTE));
if (dte == null)
return;
((Events2)dte.Events).SolutionEvents.ProjectAdded += SolutionEvents_ProjectAdded;
((Events2)dte.Events).SolutionEvents.ProjectRemoved += SolutionEvents_ProjectRemoved;
((Events2)dte.Events).ProjectItemsEvents.ItemAdded += ProjectItemsEvents_ItemAdded;
((Events2)dte.Events).ProjectItemsEvents.ItemRemoved += ProjectItemsEvents_ItemRemoved;
Run Code Online (Sandbox Code Playgroud)
从VSPackage订阅这些事件的最佳方法是什么?任何帮助赞赏!
我有:
import numpy as np
from mpmath import *
mpf(np.array(range(0,600)))
Run Code Online (Sandbox Code Playgroud)
但它不会让我这样做:
TypeError: cannot create mpf from array
Run Code Online (Sandbox Code Playgroud)
那我该怎么办?
基本上我将使用这个数组,并根据环境(例如1.35626567e1084或6.2345252e-2732)因此需要mpf ,以元素方式乘以非常大或令人难以置信的小数.
更具体地说,我将使用besseli和besselk函数创建令人难以置信的大而令人难以置信的小值.
如何获得一个mpf数组来保存这些数字?
我正在尝试扩展Visual Studio 2010 RC以便能够使用自定义编程语言.
我尝试做的前两件事是语法高亮/ Intellisense功能(很容易完成,感谢来自PDC09的"Ook!"样本)以及创建新项目模板的可能性(即能够打开*.myproj文件) .
对于第二个任务,我找不到任何简单的教程或示例.大多数示例适用于Visual Studio 2008(与IronPython集成)或甚至VS2003.可用于VS2010的少量样本不起作用(包括MPFProj)或不编译,并且太难理解.
是否有任何易于理解的示例,使用MPFProj或独立解决方案,展示如何在Visual Studio 2010中集成自定义语言的模板?
使用Visual Studio的托管包框架,如何从C#继承,以便我可以拥有C#属性页和C#项目项?我已经尝试制作一个风味项目,但它在制作我们自己的自定义节点和自定义文件属性方面受到限制.但是,在使用MPF时,我似乎无法获得随着调味项目提供的那些C#属性.
谢谢

最近我在microsoft上找到了上面显示的Visual Studio可扩展性平台图表.
大多数事情对我来说都很清楚.但是,我想知道Package API和VSL(Visual Studio库).
我试图找到更多,但无法找到任何信息.
我不太明白的事情:
- Package API究竟是什么?
- 究竟什么是VSL?
- InteropAssemblies/VSL和Package API之间的关系是什么?InteropAssemblies是否包装对Package API的访问?
- 为什么在实现本机包时应该使用VSL?有什么好处?
有没有人有关于这些主题的更多信息或有人知道一些资源?
visual-studio-2010 mpf vspackage visual-studio vs-extensibility
我已经创建了一个自定义语言包,它扩展了ProjectPackage.我可以正确地创建新项目.我希望能够使用Add-> New Item ...(Ctrl + Shift + A)菜单项将新的源文件添加到项目中.但是,当我单击此时,可用模板列表为空.我想将自己的自定义模板添加到此项目类型的可用模板菜单中.是否有一些文件来完成这个?我见过的唯一提到的就是注册表黑客攻击,但我必须想办法以编程方式进行.
我可以覆盖一个特定的方法来填充列表吗?我是否真的需要制作模板,或者我可以只显示"模板名称","图标"并提供正确的文件扩展名(文件在创建时应该为空,所以我认为模板很大程度上浪费在我想要的东西上去做).
这是我到目前为止走过的路.我想我可以在我的自定义.vproj文件中设置我的项目类型和GUID(.vproj是我的自定义项目注册的文件扩展名).我以为我可以使用与我的.vproj文件相同的ProjectType快速创建项目模板.
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
<Icon>VerilogSource.ico</Icon>
<DefaultName>module.v</DefaultName>
<Name>Basic Verilog Module</Name>
<Description>
A basic Verilog module for quickly adding new files to the project.
</Description>
<ProjectType>VerilogProject</ProjectType>
</TemplateData>
<TemplateContent>
<ProjectItem TargetFileName="$fileinputname$.v"
ReplaceParameters="true">module.v</ProjectItem>
</TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)
唉,这个模板根本没有出现,即使我已经将它包含在VSIX中并将其复制到输出目录中.如果我将此模板放在与我的.vproj相同的文件夹中,它将显示为用于创建新项目的模板(错误!),但仍然不会出现在我的新项目列表中.这可能都源于我不使用VSTemplate来创建我的项目.相反,我使用[ProvideProjectFactoryAttribute]让VS2010知道我的vproj文件在哪里,并且它将使用vproj文件(我猜你可以调用模板,但它不是VSTemplate,它是一个项目)来建立新的项目.
这是我到目前为止所处的位置,我将继续尝试新事物.我希望有人可能有我想要的答案.谢谢,
Giawa
我正在考虑为visual sudio 2010添加一种新的编程语言,我对最佳方法感到困惑.
我查看了MPF并找到了一些关于如何进行语法高亮,链接外部解析器等的示例,这看起来非常简单.
然后我读到了一些名为MEF的东西以及它如何成为visual studio的新扩展性模型.我已经玩过它了,我的语法突出显示了一些样本的工作.现在,对于MEF,我迷失了如何在我的解析器中链接我的语言,就像使用ParseSOurce的MPF一样,等等.我正在使用ANTLR btw.
MEF仅用于编辑器的视觉方面,如突出显示,装饰等......还是可以/建议用它来实现语言服务?
从我收集的内容来看,MEF是一种新的推荐方法,但创建一种新语言似乎比使用常规MPF更难.强积金仍然是一个好方法吗?
在 VSIX 项目中添加模板自定义命令时,Visual Studio 生成的脚手架代码包括以下常规结构:
\n /// <summary>\n /// Initializes a new instance of the <see cref="GenerateConfigSetterCommand"/> class.\n /// Adds our command handlers for menu (commands must exist in the command table file)\n /// </summary>\n /// <param name="package">Owner package, not null.</param>\n /// <param name="commandService">Command service to add command to, not null.</param>\n private GenerateConfigSetterCommand(AsyncPackage package, OleMenuCommandService commandService)\n {\n this.package = package ?? throw new ArgumentNullException(nameof(package));\n commandService = commandService ?? throw new ArgumentNullException(nameof(commandService));\n\n var menuCommandID = new CommandID(CommandSet, CommandId);\n var menuItem = …Run Code Online (Sandbox Code Playgroud) 我已经按照步骤(http://msdn.microsoft.com/en-us/library/bb166360.aspx)中列出的步骤来实现和注册LanguageService,但我根本无法使用它.
我的包正确加载,我可以添加功能菜单项和选项页,但我无法打开注册到我的服务的文件.当我附加一个调试器时,我可以看到我的VSPackage被构造,加载,并且它的FDoIdle方法被调用了两次.在那之后,实验性的Visual Studio会话进入杂草并且似乎陷入无限循环.如果我尝试将.txt文件保存为我的文件类型,则文件会正确保存,但不会在Visual Studio中加载,我会收到Object null异常.
我可以看到我在这个问题中提到的问题:Visual Studio 2010着色剂,智能感知和其他.从哪儿开始!
解决方案似乎是不使用Managed Package Framework而是使用Manage Extensibility Framework.这很好,但是我真的很想知道我的MPF语言服务实现有什么问题.
有没有人使用MPF成功创建了LanguageService?任何人都可以指导我一个工作示例或演练吗?
问题解决了!:
我做了一些进一步的调试,并注意到实验性的Visual Studio实例被卡住后重复调用:
Microsoft.VisualStudio.Editor.Implementation.VsFontsAndColorsInformation.TryGetIndexForNativeItem(String name,IVsColorTable colorTable,Int32&colorTableIndex)
在预感中,我在ProvideLanguageServiceAttribute中将RequestStockColors参数指定为true,现在我可以打开我的文件类型.我的简单扫描仪甚至还有工作语法着色!
我有 2 个按钮,其中一个应该在鼠标悬停时更改背景颜色。当鼠标悬停时,另一个人也应该保留他的背景图像。
我的问题是第二个也获得了鼠标悬停效果并且图像被覆盖了:(
<Window.Resources>
<Style x:Key="hover" TargetType="Button">
<Setter Property="Background" Value="#FF2598CE" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FF24779D" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
1.按钮
<Button Content="0" Name="num0" Foreground="White" Background="#FF2598CE" BorderBrush="#FF24779D" Style="{StaticResource hover}" />
Run Code Online (Sandbox Code Playgroud)
2.按钮
<Button Content="" Name="up" BorderBrush="#FF24779D">
<Button.Background>
<ImageBrush ImageSource="/Rechner;component/Images/btn_up.jpg" />
</Button.Background>
</Button>
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助