Pergunta

Atualmente estou escrevendo um quadro de plugins Winamp para C # (basicamente, um C # implementação da API do Winamp / SDK, bem como um barebones plugins template). Porque C # bibliotecas não pode exportar pontos de entrada DLL, eu estou usando um ++ / CLI invólucro que basicamente apenas carrega a biblioteca C # C. Eu gostaria de criar um modelo Visual Studio para isso, o que cria ambos o barebones C # plug-in biblioteca, e do C ++ invólucro. No entanto, se eu clique em Arquivo ? Exportar modelo, apenas o # projeto C está listado.

É possível criar um modelo de multi-projecto com um projeto C # e um projeto ++ / CLI C? Se sim, como?

Foi útil?

Solução

Eu encontrei a resposta me um tempo atrás, e se esqueceu de atualizar corretamente este. Um arquivo .vstemplate pode ser usado para criar um modelo de C ++, definindo o idioma a CSharp como em modelos C # (ele continuará a funcionar corretamente).

Aqui está um exemplo que eu usei: . arquivo vstemplate e todos os outros arquivos

usos

WiX também este método

Outras dicas

'modelo de exportação' não funciona para projetos C ++. Se você quer modelos para eles, você precisa criar-lo você mesmo: ver a minha resposta aqui . Trata-se de algum trabalho, mas se você usar este tipo de projectos muito, o trabalho é tempo bem gasto.

Editar

Eu olhei meu código, algo como isto deve começar; o método onFinish em default.js é chamada depois de clicar em 'Ok' nos assistentes padrão. Note que eu não testar isso!

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 );
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top