[英]Visual Studio 2008 template containing both a C# and a C++/CLI project?
我目前正在为 C# 编写 Winamp 插件框架(基本上是 Winamp API/SDK 的 C# 实现,以及准系统插件模板)。 因为 C# 库不能导出 DLL 入口点,所以我使用的是 C++/CLI 包装器,它基本上只是加载 C# 库。 我想为此创建Visual Studio的模板,同时创建准系统C#插件库和C ++包装。 但是,如果我单击文件 → 导出模板,则仅列出 C# 项目。
是否可以创建一个包含 C# 项目和 C++/CLI 项目的多项目模板? 如果是这样,如何?
不久前我自己找到了答案,但忘记正确更新它。 .vstemplate 文件可用于创建 C++ 模板,方法是将语言设置为 CSharp,就像在 C# 模板中一样(它仍然可以正常工作)。
这是我使用的一个示例: .vstemplate 文件和所有其他文件
“导出模板”不适用于 C++ 项目。 如果你想要它们的模板,你需要自己创建它: 在这里看到我的答案。 它涉及一些工作,但如果您经常使用此类项目,则工作时间很长。
编辑
我查了一下我的代码,这样的事情应该能让你开始; 在默认向导中单击“确定”后,将调用 default.js 中的 onFinish 方法。 请注意,我没有对此进行测试!
function onFinish( selProj, selObj )
{
var strProjectPath = wizard.FindSymbol('PROJECT_PATH');
var prjCpp;
var prjCs;
CreateProjects( strProjectPath, prjCpp, prjCs );
//project config here
prjCpp.Object.Save();
prjCs.Object.Save();
selProj = prjCpp;
}
function CreateProjects( path, prjCpp, prjCs )
{
var strProjTemplatePath = wizard.FindSymbol('ABSOLUTE_PATH'); //get template from our template dir
var strProjTemplateCpp = strProjTemplatePath + '\\default.vcproj';
var strProjTemplateCs = strProjTemplatePath + '\\default.csproj';
var Solution = dte.Solution;
if( wizard.FindSymbol( "CLOSE_SOLUTION" ) )
{
Solution.Close();
strSolutionName = wizard.FindSymbol( "VS_SOLUTION_NAME" );
if( strSolutionName.length )
{
var strSolutionPath = strProjectPath.substr( 0, strProjectPath.length - strProjectName.length );
Solution.Create(strSolutionPath, strSolutionName);
}
}
var oTarget = wizard.FindSymbol( "TARGET" );
prjCpp = oTarget.AddFromTemplate( strProjTemplateCpp, strProjectPath, strProjectName + '.vcproj' );
prjCs = oTarget.AddFromTemplate( strProjTemplateCs, strProjectPath, strProjectName + '.csproj' );
Solution.Projects.Add( prjCpp );
Solution.Projects.Add( prjCs );
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.