如何使用Roslyn修改源代码?我无法创建SyntaxNode并在SyntaxTree中插入.或者使用替代品(Antrl,NRefactory或其他)?
我正在创建具有Web应用程序,桌面,少数类库和单元测试项目的多项目解决方案模板.
我构建了基本容器并将其打包为VSIX容器.当我安装VSIX容器时,我可以在以下物理路径中使用我的解决方案模板的.zip文件
%AppData%\ Local\Microsoft\VisualStudio\11.0\Extensions\tbxs0hui.w2e\ProjectTemplates\CSharp\1033\myprojecttemplate.zip,所以一切都很好.
但是当我启动Visual Studio 2012时,我看不到新项目 - > Visual C#下列出的我的解决方案模板.
当我出错的时候?有什么建议?
这是Multisolution RootTemplate.vstemplate内容:
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
<TemplateData>
<Name>MultiProject</Name>
<Description>MultiProject</Description>
<Icon>MultiProject.ico</Icon>
<ProjectType>CSharp</ProjectType>
<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
<SortOrder>1000</SortOrder>
<TemplateID>bbd7217a-8572-4edc-80ce-488cb9a347df</TemplateID>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>MultiProject</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<SolutionFolder Name="FolderName1">
<SolutionFolder Name="FolderName2">
<ProjectTemplateLink ProjectName="xxxxx">Children\Application1\Application1.vstemplate</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="yyyy">Children\Application1\Application2.vstemplate</ProjectTemplateLink>
</SolutionFolder>
<SolutionFolder Name="Folder3">
<ProjectTemplateLink ProjectName="zzzzzz">Children\Application3\Application3.vstemplate</ProjectTemplateLink>
</SolutionFolder>
<SolutionFolder Name="Web">
<ProjectTemplateLink ProjectName="Web">Children\Web\Web.vstemplate</ProjectTemplateLink>
</SolutionFolder>
</SolutionFolder>
<SolutionFolder Name="Tests">
<ProjectTemplateLink ProjectName="xxxxxTest">Children\ApplicationxxxxUnitTest\ApplicationxxxxUnitTest.vstemplate</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="yyyyyTest">Children\ApplicationyyyyUnitTest\ApplicationyyyyUnitTest.vstemplate</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="zzzzzTest">Children\ApplicationzzzzUnitTest\ApplicationzzzzUnitTest.vstemplate</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="WebTest">Children\ApplicationWebUnitTest\ApplicationWebUnitTest.vstemplate</ProjectTemplateLink>
</SolutionFolder>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)
在安装VSIX之后,我可以在VS2012中看到一个名为"MultiProject"的新项目.当我创建一个新项目时,四个测试项目没有在Tests文件夹下创建.我尝试用vstemplate中的Tests Folder下的类库替换它们,它工作正常,只有ProjectTypeGuid {3AC096D0-A1C2-E12C-1390-A8335801FDAB}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}的单元测试项目未在测试文件夹下创建.
multi-project project-template vsix visual-studio-extensions visual-studio-2012
我在自定义工具窗口中使用IVsInvisibleEditor将t4文件加载到托管vs编辑器中.我调用IVsInvisibleEditorManager.RegisterInvisibleEditor方法传入t4文件,就像它们在这里一样.然后我使用GetDocData方法获取文件内容,然后将它们设置为编辑器的缓冲区.我通过将getdocdata的结果转换为IVsPersistDocData实例并调用save方法来保存编辑器中的更改.在关闭工具窗口时,我尝试通过在IVsPersistDocData实例上调用close来清理资源.当我尝试再次为同一个文件打开工具窗口时,我尝试再次在不可见的编辑器上调用getdocdata时会出现异常.如果我不调用IVsPersistDocData上的关闭它就可以了.如何正确关闭所有这些资源(IVsInvisibleEditor,IVsInvisibleEditorManager,IVsPersistDocData),以便在尝试再次使用它时不会出现异常?