Visual Studio 2008-Vorlage, die sowohl ein C # und C ++ / CLI-Projekt?
-
06-07-2019 - |
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?
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
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 );
}