我想基于IronStudio添加自己的项目类型.所以,
Templates\Projects\MyProject文件夹,并向其中添加了一个文件,并将其属性"包含在VSIX中"设置为true.然后修改了要从IronStudio中派生的主Package类PythonProjectPackage,并设置ProvideProjectFactory属性:
[ProvideProjectFactory(
typeof(PythonProjectFactory),
"Django Project",
"Django Project Files (*.myproj);*.myproj",
"myproj", "myproj",
@"Templates\Projects\MyProject",
LanguageVsTemplate="MyProject")]
public sealed class MyPackage : PythonProjectPackage
Run Code Online (Sandbox Code Playgroud)
跑了.但MyProject没有出现在项目模板中.为什么不?
生成的.pkgdef文件如下所示:
[$RootKey$\InstalledProducts\VSPackage3Package]
@="#110"
"Package"="{5cd7435c-7461-459f-80bc-c0c79e9d462f}"
"PID"="1.0"
"ProductDetails"="#112"
"LogoID"="#400"
[$RootKey$\Packages\{5cd7435c-7461-459f-80bc-c0c79e9d462f}]
@="Microsoft.VSPackage3.VSPackage3Package, VSPackage3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a4f1577d825253f8"
"InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
"Class"="Microsoft.VSPackage3.VSPackage3Package"
"CodeBase"="$PackageFolder$\VSPackage3.dll"
[$RootKey$\Editors\{888888c4-36f9-4453-90aa-29fa4d2e5706}]
"Package"="{5cd7435c-7461-459f-80bc-c0c79e9d462f}"
[$RootKey$\Editors\{888888c4-36f9-4453-90aa-29fa4d2e5706}\Extensions]
"py"=dword:00000020
[$RootKey$\Editors\{888888c4-36f9-4453-90aa-29fa4d2e5706}\LogicalViews]
"{7651a701-06e5-11d1-8ebd-00a0c90f26ea}"=""
[$RootKey$\Editors\{888888c4-36f9-4453-90aa-29fa4d2e5706}\LogicalViews]
"{7651a702-06e5-11d1-8ebd-00a0c90f26ea}"=""
[$RootKey$\Editors\{888888c4-36f9-4453-90aa-29fa4d2e5706}\LogicalViews]
"{7651a703-06e5-11d1-8ebd-00a0c90f26ea}"=""
[$RootKey$\CLSID\{888888fd-3c4a-40da-aefb-5ac10f5e8b30}]
@="Microsoft.IronPythonTools.Project.PythonGeneralPropertyPage"
"InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
"Class"="Microsoft.IronPythonTools.Project.PythonGeneralPropertyPage"
"CodeBase"="$PackageFolder$\VSPackage3.dll"
"ThreadingModel"="Both"
[$RootKey$\Projects\{888888a0-9f3d-457c-b088-3a5042f75d52}]
@="PythonProjectFactory"
"DisplayName"="My Project"
"DisplayProjectFileExtensions"="My Project Files (*.myproj);*.myproj"
"Package"="{5cd7435c-7461-459f-80bc-c0c79e9d462f}"
"DefaultProjectExtension"="myproj"
"PossibleProjectExtensions"="myproj"
"ProjectTemplatesDir"="$PackageFolder$\Templates\Projects\MyProject"
"Language(VsTemplate)"="MyProject" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Visual Studio 2008的可扩展性来编写一个插件,该插件将在解析接口后创建一个包含各种消息的项目文件夹.但是,我在创建/添加文件夹的步骤中遇到了麻烦.我试过用了
ProjectItem folder =
item.ProjectItem.Collection.AddFolder(newDirectoryName, string.Empty);
Run Code Online (Sandbox Code Playgroud)
(item是我的目标文件,我正在创建一个具有相同名称但附加了"Messages"的文件夹)但是当文件夹已经存在时它会窒息(没什么大惊喜).
我尝试删除它,如果它已经存在,例如:
DirectoryInfo dirInfo = new DirectoryInfo(newDirectoryParent +
newDirectoryName);
if (dirInfo.Exists)
{
dirInfo.Delete(true);
}
ProjectItem folder =
item.ProjectItem.Collection.AddFolder(newDirectoryName, string.Empty);
Run Code Online (Sandbox Code Playgroud)
我可以看到该文件夹在调试时被删除,但它似乎仍然认为该文件夹仍然存在并且已经存在文件夹已经存在异常.
有任何想法吗???
谢谢.
AK
....也许答案是在删除后以编程方式刷新项目?怎么可能这样做?
我想编写一个visual studio addon来为我做一些代码修改(比如一些特定的重构).我想知道我应该使用这些工具中的哪一个以及为什么?
我们有resharper的许可证,另外两个是免费的,这是一个内部使用的软件,所以我们不需要担心许可.
resharper vsx visual-studio-addins dxcore visual-studio-2008
你能从.NET应用程序中处理T4模板吗?该代码可以调用吗?包含在项目中?许可?
更新:所以看起来你必须以某种方式使用VS.
我创建了以下vsct文件xml.
<?xml version="1.0" encoding="utf-8"?>
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Extern href="stdidcmd.h"/>
<Extern href="vsshlids.h"/>
<Extern href="msobtnid.h"/>
<Commands package="guidMyVSXCommandsPkg">
<Menus>
<Menu guid="guidMyVSXCommandsCmdSet" id="TopLevelMenu" priority="0x100" type="Menu">
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>
<Strings>
<MenuText>Work???</MenuText>
<ButtonText>FigureMain</ButtonText>
<CommandName>TryMainMenu</CommandName>
</Strings>
</Menu>
</Menus>
<Groups>
<Group guid="guidMyVSXCommandsCmdSet" id="TopLevelMenuGroup" priority="0x0600">
<Parent guid="guidMyVSXCommandsCmdSet" id="TopLevelMenu"/>
</Group>
</Groups>
<Buttons>
<Button guid="guidMyVSXCommandsCmdSet" id="cmdidMyCommand" priority="0x0100" type="Button">
<Parent guid="guidMyVSXCommandsCmdSet" id="TopLevelMenuGroup" />
<Icon guid="guidImages" id="bmpPic1" />
<Strings>
<CommandName>cmdidMyCommand</CommandName>
<ButtonText>DO SOMETHING REAL COOL!!!!!!!!</ButtonText>
</Strings>
</Button>
</Buttons>
<Bitmaps>
<Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>
</Bitmaps>
</Commands>
<Symbols>
<!-- This is the …Run Code Online (Sandbox Code Playgroud) 我正在开发一个VS包,我需要实现的部分功能是将文件添加到当前打开的解决方案的解决方案项目中.
如果右键单击解决方案并选择"添加">"现有项",则这与手动执行的操作完全相同.然后在磁盘上选择了一个文件.
我已经仔细研究了DTE和DTE2接口,可以看到添加和操作项目的操作,但似乎没有任何添加单个文件的操作.
谢谢.
我目前正在编写一个提供自定义的扩展TextFormattingParagraphProperties(通过ITextParagraphPropertiesFactoryService)。这似乎工作正常,除非我想由于文档中其他地方的更改而更新行的格式。
似乎ITextParagraphPropertiesFactoryService.Create()仅对编辑器确定为“无效”的每一行调用(无论该行发生更改还是在屏幕上变得可见)。
有什么方法可以强制 IWpfTextView 刷新其布局(整个可见文档或理想情况下的特定行)?
TextFormattingParagraphPropertiesPS我正在使用的具体功能是TextTabProperties,据我所知,这是修改选项卡单独间距的唯一方法(即,它们并不都是统一的)
谢谢
我注意到,当我在 Visual Studio 的“观察”窗口中查看某些类型的变量(例如XElement)时,如果我单击“调试可视化工具”放大镜,则会出现应用于字符串(文本、XML、HTML)的相同可视化工具。我以前从未在任何其他类型上看到过这种情况。调试器如何决定这样做?
编辑:这是 Watch 窗口的屏幕截图,表明 XElement 可以使用 Text Visualizer 显示,而 System.Version(也实现 ToString)没有。

我正在尝试为 Visual Studio 创建我的第一个扩展,到目前为止,我一直在遵循本教程来开始使用(http://www.diaryofaninja.com/blog/2014/02/18/who-said-building -视觉工作室扩展很困难)。现在,当我单击解决方案资源管理器中的文件时,会出现一个自定义菜单项。我的小项目现在需要的是获取在解决方案资源管理器中选择的文件的路径,但我不明白如何做到这一点。有什么帮助吗?
- - - - - - - - - - - - - - 编辑 - - - - - - - - - - - ---------
正如马茨所说,答案就在我发布的链接中。只是我写的时候没注意到而已。同时,我还在该线程中找到了另一个可能的答案:How to get the details of the selected item in Solution Explorer using vs package
我在哪里找到了这段代码:
foreach (UIHierarchyItem selItem in selectedItems)
{
ProjectItem prjItem = selItem.Object as ProjectItem;
string filePath = prjItem.Properties.Item("FullPath").Value.ToString();
//System.Windows.Forms.MessageBox.Show(selItem.Name + filePath);
return filePath;
}
Run Code Online (Sandbox Code Playgroud)
因此,这里有两种方法来获取所选文件的路径:)
我有一个Visual Studio扩展的解决方案.此扩展应该适用于自VS2010以来的任何VS版本.那是因为我使用的是VS 2010 SDK.我做了一些黑客攻击,将我的项目绑定到VS2010 SDK程序集和目标,无需安装SDK即可运行 - 感谢Aaron Marten的详细指南.我可以成功构建我的扩展的vsix并在任何VS中安装它.尼斯.
但我也想用F5调试我的扩展.我希望不是在VS2010中,而是在我的情况下在其他一些VS-VS 2015中.我甚至安装了VS 2015 SDK.但它显然不起作用.作为VS2010 SDK的目标应该部署扩展内置到VS2010实验实例中.
所以问题是:
如果扩展本身使用VS2010 SDK,如何使用F5设置项目来调试VS2015中的vsix扩展?
可能我需要使用VS2015 SDK中的一些目标/任务但是哪些以及如何?
vsx visual-studio visual-studio-sdk vsix visual-studio-extensions