Frage

Ich bin derzeit einen Winamp Plugin-Framework für C # zu schreiben (im Grunde genommen eine C # -Implementierung des Winamp API / SDK sowie eine Barebone-Plugin-Vorlage). Da C # Bibliotheken können nicht DLL Einspeisepunkten exportieren, ich bin mit einem C ++ / CLI-Wrapper, die im Grunde nur die C # Bibliothek lädt. Ich mag eine Visual Studio-Vorlage für diese schaffen, die beide erstellt die Barebone-C # Plugin-Bibliothek, und , um den C ++ Wrapper. Allerdings, wenn ich klicken Sie auf Datei → Vorlage exportieren, nur die C # Projekt aufgelistet.

Ist es möglich, eine Multi-Projektvorlage erstellen sowohl einen C # -Projekt enthält und ein C ++ / CLI-Projekt? Wenn ja, wie?

War es hilfreich?

Lösung

fand ich die Antwort mir vor einer Weile, und vergessen haben, richtig diese zu aktualisieren. Eine .vstemplate-Datei verwendet werden kann, indem die Sprache eine C ++ Template zu erstellen wie in C # Vorlagen csharp (es wird immer noch korrekt funktionieren).

Hier ist ein Beispiel, das ich verwendet habe: . vstemplate Datei und alle anderen Dateien

WiX verwendet auch diese Methode

Andere Tipps

‚Exportvorlage‘ funktioniert nicht für C ++ Projekte. Wenn Sie Vorlagen für die sie wollen, müssen Sie es selbst erstellen: siehe meine Antwort hier . Es geht um etwas Arbeit, aber wenn man diese Art von Projekten viel verwenden, ist die Arbeit gut verbrachte Zeit.

Bearbeiten

sah ich meinen Code auf, so etwas wie dies sollte Sie erhalten begonnen; die OnFinish Methode in default.js wird nach einem Klick auf ‚OK‘ in dem Standard Assistenten genannt. Beachten Sie, dass ich habe dies nicht Test!

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 );
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top