创建新解决方案的 VSPackage 命令
VSPackage command that creates a new solution
我如何在 VSPackage 中创建一个命令来创建一个新的解决方案,其中包含一个包含 1 个 .cs 文件的新项目(C# Class 库)?
它不是很简单,但是 MSDN 上有一个有趣的指南解释了如何做。它用于加载项,但在 VSPackage 中,您有相同的一组 Visual Studio DTE 对象可用(DTE 应用程序)。
您可以定义一个使用 GetProjectTemplate 和 AddFromTemplate 的方法来创建两个控制台项目。您可以在 VSPackage class 的方法 Initialize
中定义一个 OLE 菜单命令(如果这是您要查找的内容):
protected override void Initialize()
{
//// Create the command for the menu item.
var aCommand = new CommandID(GuidList.GuidCmdSet, (int)PkgCmdIdList.CmdId);
var menuItemEnable = new OleMenuCommand((s, e) => createProjectsFromTemplates(), aCommand);
}
然后定义一个与命令(在本例中为createProjectsFromTemplates
)相关联的方法,该方法使用项目创建解决方案:
private DTE2 _mApplicationObject;
public DTE2 ApplicationObject
{
get
{
if (_mApplicationObject != null) return _mApplicationObject;
// Get an instance of the currently running Visual Studio IDE
var dte = (DTE)GetService(typeof(DTE));
_mApplicationObject = dte as DTE2;
return _mApplicationObject;
}
}
public void createProjectsFromTemplates()
{
try
{
// Create a solution with two projects in it, based on project
// templates.
Solution2 soln = (Solution2)ApplicationObject.Solution;
string csTemplatePath;
string csPrjPath = "C:\UserFiles\user1\addins\MyCSProject";
// Get the project template path for a C# console project.
// Console Application is the template name that appears in
// the right pane. "CSharp" is the Language(vstemplate) as seen
// in the registry.
csTemplatePath = soln.GetProjectTemplate(@"Windows\ClassLibrary\ClassLibrary.vstemplate",
"CSharp");
System.Windows.Forms.MessageBox.Show("C# template path: " +
csTemplatePath);
// Create a new C# console project using the template obtained
// above.
soln.AddFromTemplate(csTemplatePath, csPrjPath, "New CSharp
Console Project", false);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show("ERROR: " + ex.Message);
}
}
对于 10.0 之后的 Visual Studio 版本,模板项目的 zip 文件不再可用。必须引用.vstemplate,可以找到文件夹下的所有工程模板:
C:\Program Files (x86)\Microsoft Visual Studio 1x.0\Common7\IDE\ProjectTemplates\
更多信息MSDN link。
该方法应基于 c# 项目模板(例如包含 class1.cs 作为初始文件)创建一个包含一个 C# 项目的解决方案。
如果您愿意,您也可以定义自己的模板,并基于该自定义模板创建解决方案。这是来自 MSDN 的关于如何创建自定义模板的指南。
希望对您有所帮助。
我如何在 VSPackage 中创建一个命令来创建一个新的解决方案,其中包含一个包含 1 个 .cs 文件的新项目(C# Class 库)?
它不是很简单,但是 MSDN 上有一个有趣的指南解释了如何做。它用于加载项,但在 VSPackage 中,您有相同的一组 Visual Studio DTE 对象可用(DTE 应用程序)。
您可以定义一个使用 GetProjectTemplate 和 AddFromTemplate 的方法来创建两个控制台项目。您可以在 VSPackage class 的方法 Initialize
中定义一个 OLE 菜单命令(如果这是您要查找的内容):
protected override void Initialize()
{
//// Create the command for the menu item.
var aCommand = new CommandID(GuidList.GuidCmdSet, (int)PkgCmdIdList.CmdId);
var menuItemEnable = new OleMenuCommand((s, e) => createProjectsFromTemplates(), aCommand);
}
然后定义一个与命令(在本例中为createProjectsFromTemplates
)相关联的方法,该方法使用项目创建解决方案:
private DTE2 _mApplicationObject;
public DTE2 ApplicationObject
{
get
{
if (_mApplicationObject != null) return _mApplicationObject;
// Get an instance of the currently running Visual Studio IDE
var dte = (DTE)GetService(typeof(DTE));
_mApplicationObject = dte as DTE2;
return _mApplicationObject;
}
}
public void createProjectsFromTemplates()
{
try
{
// Create a solution with two projects in it, based on project
// templates.
Solution2 soln = (Solution2)ApplicationObject.Solution;
string csTemplatePath;
string csPrjPath = "C:\UserFiles\user1\addins\MyCSProject";
// Get the project template path for a C# console project.
// Console Application is the template name that appears in
// the right pane. "CSharp" is the Language(vstemplate) as seen
// in the registry.
csTemplatePath = soln.GetProjectTemplate(@"Windows\ClassLibrary\ClassLibrary.vstemplate",
"CSharp");
System.Windows.Forms.MessageBox.Show("C# template path: " +
csTemplatePath);
// Create a new C# console project using the template obtained
// above.
soln.AddFromTemplate(csTemplatePath, csPrjPath, "New CSharp
Console Project", false);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show("ERROR: " + ex.Message);
}
}
对于 10.0 之后的 Visual Studio 版本,模板项目的 zip 文件不再可用。必须引用.vstemplate,可以找到文件夹下的所有工程模板:
C:\Program Files (x86)\Microsoft Visual Studio 1x.0\Common7\IDE\ProjectTemplates\
更多信息MSDN link。
该方法应基于 c# 项目模板(例如包含 class1.cs 作为初始文件)创建一个包含一个 C# 项目的解决方案。
如果您愿意,您也可以定义自己的模板,并基于该自定义模板创建解决方案。这是来自 MSDN 的关于如何创建自定义模板的指南。
希望对您有所帮助。