Как проект Empty Visual C ++ может быть создан программно? - PullRequest
2 голосов
/ 17 февраля 2012

Я хотел знать, как использовать шаблон для проекта Empty Visual C ++, чтобы программно создать новое решение с этим пустым проектом.Код (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);

Я не смог найти шаблон пустого проекта VC ++ в том месте, где находятся все остальные шаблоны (C # / F # / VB).Пустой шаблон проекта VC ++ действительно появляется в установленных шаблонах, когда я вручную создаю новый проект через IDE.Какими должны быть параметры для soln.GetProjectTemplate()?Кажется, он не распознает "VC++" как язык.Я знаю, что "CSharp" и "VisualBasic" являются допустимыми параметрами.Но я хотел пустой проект VC ++.Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 02 марта 2012

Я публикую этот ответ в надежде, что он может помочь кому-то, столкнувшемуся с той же проблемой, с которой я столкнулся.

Очевидно, что API-интерфейс платформы Visual Studio Extensibility не предоставляет возможность создавать пустой проект 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 и открыть решение оттуда.

...