Шаблон Visual Studio 2008, содержащий как проект C #, так и проект C ++ / CLI?

StackOverflow https://stackoverflow.com/questions/1812016

  •  06-07-2019
  •  | 
  •  

Вопрос

В настоящее время я пишу фреймворк плагинов Winamp для C # (по сути, C #-реализацию Winamp API / SDK, а также шаблон плагина barebones).Поскольку библиотеки C # не могут экспортировать точки входа DLL, я использую оболочку C ++ / CLI, которая в основном просто загружает библиотеку C #.Я бы хотел создать шаблон Visual Studio для этого, который создает и то , и другое библиотека плагинов barebones для C #, и оболочка C ++.Однако, если я нажму Файл → Экспортировать шаблон, в списке появится только проект C #.

Возможно ли создать шаблон для нескольких проектов, содержащий как проект C #, так и проект C ++ / CLI?Если да, то каким образом?

Это было полезно?

Решение

Некоторое время назад я сам нашел ответ и забыл его правильно обновить. Файл .vstemplate можно использовать для создания шаблона C ++, установив язык CSharp, как в шаблонах C # (он все равно будет работать правильно).

Вот пример, который я использовал: . vstemplate file и все остальные файлы

WiX также использует этот метод

Другие советы

'export template' не работает для проектов на C ++.Если вам нужны шаблоны для них, вам нужно создать их самостоятельно:смотрите мой ответ здесь.Это требует некоторой работы, но если вы часто используете проекты такого рода, то потратите время с пользой.

Редактировать

Я просмотрел свой код, что-то вроде этого должно помочь вам начать;метод onFinish в default.js вызывается после нажатия кнопки "Ок" в мастерах по умолчанию.Обратите внимание, что я это не тестировал!

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 с атрибуция
Не связан с StackOverflow
scroll top