2

この空のプロジェクトで新しいソリューションをプログラムで作成するために、空のVisual C++プロジェクト用にテンプレートを使用する方法を知りたいと思っていました。私が今持っているコード(C#が)です:空のVisual C++プロジェクトをプログラムで作成するにはどうすればよいですか?

string VSProgID = "VisualStudio.Solution.10.0"; 
Type solnObjType = System.Type.GetTypeFromProgID(VSProgID, true); 
Solution4 soln = (Solution4) System.Activator.CreateInstance(solnObjType, true); 
soln.Create(@"C:\NewSoln", "New"); 
soln.SaveAs(@"C:\NewSoln\New.sln"); 
string emptyVCProjPath = soln.GetProjectTemplate("General/Empty Project", "VC++"); // Here's where I need help 
soln.AddFromTemplate(emptyVCProjPath, @"C:\NewSoln\NewProj", "New.vcxproj", false); 

私は他のすべてのテンプレート(C#/ F#/ VB)が置かれている場所でVC++空のプロジェクトテンプレートを見つけることができませんでした。 IDEを使用して手動で新規プロジェクトを作成すると、VC++空のプロジェクトテンプレートがインストールされたテンプレートに表示されます。 soln.GetProjectTemplate()のパラメータはどうなりますか?言語として"VC++"を認識していないようです。 "CSharp""VisualBasic"は有効なオプションです。しかし私はVC++ Empty Projectを望んでいました。どんな助けでも大歓迎です。

+0

空のVC++プロジェクトを作成してテンプレートとして使用するだけでは不十分ですか? – AVIDeveloper

+0

私はこれを検討していましたが、今まで収集したものから、テンプレートはZIP形式であると考えられています。空のプロジェクトが開いている状態で、「エクスポートテンプレート」機能を使用しようとしましたが、無効になっています。テンプレートとして使用するのに必要なファイルを含むZIPを入手する方法がわかりません。私が理解できないことは、プロジェクトファイルのすべてのGUIDで何が起こるかです。彼らは新しいプロジェクトのために再生されていますか? –

+1

準備が整ったVC++テンプレートも見つかりませんでした。しかし私の提案は、手動でそれを行うことでした。すなわち、空のVC++プロジェクトを作成し、好きなように設定します。それを保存;テキストエディタで開きます。生成するデータのプレースホルダを設定します(例:#GUID#、#CPP_FILES#など)。これはあなた自身のVC++テンプレートです。新しいプロジェクトを作成する場合は、C#コードからテンプレートファイルを開き、プレースホルダを適切なデータに置き換えてください。 – AVIDeveloper

答えて

3

私が直面していたのと同じ問題に直面している人を助けるかもしれないことを願ってこの回答を投稿しています。

明らかに、Visual Studio ExtensibilityフレームワークAPIは、空のVisual C++プロジェクトをプログラムで作成するオプションを提供していません。私はこれを達成するためにソリューションとプロジェクトファイルを生成しなければなりませんでした。具体的には、[solution_name].sln,[project_name].vcxproj、および[project_name].vcxproj.filtersのファイルを生成する必要がありました。新しいプロジェクト用にGUIDを生成し、適切な場所に挿入する必要がありました。この空のプロジェクトにファイルを追加する必要がある場合は、ヘッダーファイル用にClIncludeタグを生成する必要があり、ソースファイル用にClCompileタグを生成する必要があります。これらのタグは[project_name].vcxproj[project_name].vcxproj.filtersファイルに追加されます。既存のVisual C++プロジェクトのファイルを参照して、何がどこに行くのかを理解してください。それはかなり簡単です。


UPDATE

何らかの理由で、VC++ソリューションは、この方法は、(Windowsのエクスプローラでダブルクリックしてソリューションファイルで)直接開きません生成されました。私はVisual Studioを起動し、そこからソリューションを開く必要があります。

+1

あなたのソリューションは非常に有益です。私はそこから始める。どうもありがとう! – smwikipedia

+1

私の解決策は次のとおりです。http://stackoverflow.com/questions/32785764/how-to-programmatically-create-a-vc-project-with-c – smwikipedia

+1

@smwikipedia XMLを直接操作しませんでした。私はあなたのようなテンプレートを使い、Regexは(文字列置換が私のニーズを満たさなかったので)置き換えます。プロジェクトのニーズによって細かい詳細が異なる可能性があるため、詳細は記載しませんでした。しかし、あなたのソリューションに詳細を追加したことは素晴らしいことです。ありがとう。 –

関連する問題