문제

현재 C# (기본적으로 Winamp API/SDK의 C# 구현 및 BareBones 플러그인 템플릿의 C# 구현)을위한 WinAMP 플러그인 프레임 워크를 작성하고 있습니다. C# 라이브러리는 DLL 엔트리 포인트를 내보낼 수 없으므로 기본적으로 C# 라이브러리를로드하는 C ++/CLI 래퍼를 사용하고 있습니다. 이를 위해 Visual Studio 템플릿을 만들고 싶습니다. 둘 다 베어 본 C# 플러그인 라이브러리, 그리고 C ++ 래퍼. 그러나 파일 → 내보내기 템플릿을 클릭하면 C# 프로젝트 만 나열됩니다.

C# 프로젝트와 C ++/CLI 프로젝트를 모두 포함하는 다중 프로젝트 템플릿을 만들 수 있습니까? 그렇다면 어떻게?

도움이 되었습니까?

해결책

나는 얼마 전에 답을 찾았고 이것을 올바르게 업데이트하는 것을 잊었다. .vstemplate 파일은 C# 템플릿에서와 같이 언어를 CSHARP로 설정하여 C ++ 템플릿을 만드는 데 사용될 수 있습니다 (여전히 올바르게 작동합니다).

다음은 내가 사용한 예입니다. .VSTEMPLATE 파일 그리고 다른 모든 파일

Wix는이 방법도 사용합니다

다른 팁

'내보내기 템플릿'은 C ++ 프로젝트에서는 작동하지 않습니다. 템플릿을 원한다면 직접 템플릿을 만들어야합니다. 내 대답을 참조하십시오. 여기. 일부 작업이 포함되지만 이런 종류의 프로젝트를 많이 사용하면 작업이 적절한 시간입니다.

편집하다

나는 내 코드를 찾아 보았다. 이런 일이 당신이 시작해야한다. Default.js의 Onfinish 메소드는 기본 마법사에서 'OK'를 클릭 한 후 호출됩니다. 나는 이것을 테스트하지 않았다!

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