C#とC ++ / CLIプロジェクトの両方を含むVisual Studio 2008テンプレート?

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

  •  06-07-2019
  •  | 
  •  

質問

現在、C#用のWinampプラグインフレームワークを作成しています(基本的に、Winamp API / SDKのC#実装、およびベアボーンプラグインテンプレート)。 C#ライブラリはDLLエントリポイントをエクスポートできないため、基本的にC#ライブラリをロードするだけのC ++ / CLIラッパーを使用しています。このためのVisual Studioテンプレートを作成します。このテンプレートは、ベアボーンC#プラグインライブラリ both と、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