繁体   English   中英

包含 C# 和 C++/CLI 项目的 Visual Studio 2008 模板?

[英]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 文件所有其他文件

WiX 也使用这种方法

“导出模板”不适用于 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM