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); 

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

+0

Не хватило бы просто создать пустой проект VC++ и использовать его в качестве шаблона? – AVIDeveloper

+0

Я рассматривал это, но из того, что я собираю до сих пор, шаблоны должны быть в формате ZIP. Когда пустой проект открыт, я пытаюсь использовать функцию «Экспорт шаблона», но он отключен. Я не уверен, как получить ZIP, содержащий необходимые файлы, которые будут использоваться в качестве шаблона. Я также не понимаю, что происходит со всеми GUID в файлах проекта? Восстановлены ли они для нового проекта? –

+1

Я также не смог найти готовый шаблон VC++. Но мое предложение состояло в том, чтобы сделать это самостоятельно, вручную. А именно: создайте пустой проект VC++ и настройте его по своему усмотрению; Сохрани это; Открыть в текстовом редакторе; Поместите заполнители для любых данных, которые вы хотите сгенерировать (например, # GUID #, # CPP_FILES # и т. Д.). Теперь это ваш собственный шаблон VC++. Когда вы хотите создать новый проект, откройте файл шаблона с вашего кода C#, замените заполнители соответствующими данными, и все готово. – AVIDeveloper

ответ

3

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

Очевидно, что API рамки 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 replace (потому что замена строки не соответствовала моим потребностям). Я забыл детали, потому что более тонкие детали могут отличаться для разных потребностей проекта. Но, здорово, что вы включили более подробные сведения в свое решение. Благодарю. –

Смежные вопросы