Como pode um projeto Visual C ++ vazio ser criado programaticamente?
-
27-10-2019 - |
Pergunta
Eu queria saber como usar o modelo para um projeto Empty Visual C ++ para criar programaticamente uma nova solução com esse projeto vazio.O código (C #) que tenho agora é:
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);
Não consegui encontrar o modelo de projeto vazio do VC ++ no local onde todos os outros modelos (C # / F # / VB) estão localizados.O modelo de projeto vazio do VC ++ aparece nos modelos instalados quando eu crio um novo projeto manualmente por meio do IDE.Quais devem ser os parâmetros para soln.GetProjectTemplate()
?Parece não reconhecer "VC++"
como um idioma.Eu sei que "CSharp"
e "VisualBasic"
são opções válidas.Mas eu queria um projeto vazio VC ++.Qualquer ajuda será muito apreciada.
Solução
Estou postando esta resposta na esperança de que ela possa ajudar alguém com o mesmo problema que eu.
Aparentemente, a API da estrutura de extensibilidade do Visual Studio não fornece uma opção para criar um projeto Visual C ++ vazio de forma programática. Tive que gerar a solução e os arquivos do projeto para conseguir isso. Especificamente, os arquivos [solution_name].sln
, [project_name].vcxproj
e [project_name].vcxproj.filters
tiveram que ser gerados. Um GUID teve que ser gerado para o novo projeto e inserido nos locais apropriados. Se for necessário adicionar arquivos a este projeto vazio, tags ClInclude
precisam ser geradas para arquivos de cabeçalho e tags ClCompile
para arquivos de origem. Essas tags são adicionadas aos arquivos [project_name].vcxproj
e [project_name].vcxproj.filters
. Consulte os arquivos de um projeto Visual C ++ existente para ajudá-lo a descobrir o que vai para onde. É muito simples.
< PaulUPDATE
Por algum motivo, a solução VC ++ gerada dessa forma não abre diretamente (clicando duas vezes no arquivo de solução no Windows Explorer). Tenho que iniciar o Visual Studio e abrir a solução a partir daí.