j'ai suivi ce débordement de pile sur la façon de créer un J'ai également exploré en utilisant slnTools , mais je ne vois pas comment créer une nouvelle solution à partir de zéro. p> finalement, je voudrais créer 3- 4 VS2012 Projets Programmatiquement et ensuite les ajouter à une solution qui est également créée par programme. P> J'ai tenté une solution basée sur Ce débordement de pile , mais je reçois une erreur étrange. Voici le code: p> et voici l'erreur suivante: p>
p> p>
4 Réponses :
Cela fonctionne pour moi (vs2012 Ultimate): [modifier:]
Regardant sous HKCR, il semble qu'il y ait un visualstudio.dte (sans le .11.0) qui pointera la dernière version de vs. Donc, sur ma machine avec VS2012 et VS2013, il utilisera ce dernier. P> p>
Testé et fonctionnant à l'aide de .NET4 Winforms, et une référence à ENVDTE100.DLL (qui devrait également ajouter des références à ENVDTE90.DLL, ENVDTE80.DLL, ENVDTE80.DLL et ENVDTE.DLL)
Type type = Type.GetTypeFromProgID("VisualStudio.DTE.11.0"); Object obj = System.Activator.CreateInstance(type, true); EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)obj; EnvDTE100.Solution4 _solution = (EnvDTE100.Solution4)dte.Solution; _solution.Create(@"C:\Test\", "Test"); _solution.SaveAs(@"C:\Test\Test.sln");
Ajoutez la référence à EnvMTE via Nuget. Ensuite, vous n'avez aucun problème avec des dépendances.
Les deux solutions ci-dessous par Jimmy et Xenolighting Work, mais j'ai toujours eu le problème de l'erreur susmentionnée. Donc, au cas où quelqu'un d'autre rencontre cette erreur, voir ce lien:
http://msdn.microsoft.com/en-us/library/ms228772 (v = vs.80) .aspx p>
Pour résumer le lien ci-dessus (ou Au cas où il est jamais brisé), voici ce que vous faites. Ajoutez cette classe à votre solution: p> enveloppe maintenant le code de génération de code (des réponses ci-dessous) avec ces instructions: p> MessageFilter.Register();
//INSERT YOUR CODE HERE
MessageFilter.Revoke();
Utilisation C #, je crée une nouvelle solution Visual Studio 2013 Programmatiquement P> Étape 1: Tout d'abord, créez une application de formulaire de fenêtre et après cela pour créer un bouton avec nom Créer dans le formulaire par défaut1. P> Step2: Ensuite, écrivez le code suivant dans le bouton Créer un déclic. P> private void btn_Create_Click(object sender, EventArgs e)
{
try
{
//// Get an instance of the currently running Visual Studio IDE.
System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.12.0");
Object obj = System.Activator.CreateInstance(type, true);
EnvDTE.DTE dte = (EnvDTE.DTE)obj;
dte.MainWindow.Visible = true; // optional if you want to See VS doing its thing
// create a new solution
dte.Solution.Create(@"C:\NewSolution\", "NewSolution");
var solution = dte.Solution;
// create a C# WinForms app
solution.AddFromTemplate(@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ProjectTemplatesCache\CSharp\Windows\1033\WindowsApplication\csWindowsApplication.vstemplate",
@"C:\NewSolution\WinFormsApp", "WinFormsApp");
// create a C# class library
solution.AddFromTemplate(@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ProjectTemplatesCache\CSharp\Windows\1033\ClassLibrary\csClassLibrary.vstemplate",
@"C:\NewSolution\ClassLibrary", "ClassLibrary");
// save and quit
dte.ExecuteCommand("File.SaveAll");
dte.Quit();
}
catch (Exception ex)
{
throw;
}
}
Par curiosité, pourquoi? Cela semble être quelque chose que vous le feriez rarement, pourquoi créer un programme pour cela?
J'ai un peu un ensemble spécifique d'exigences qui seront répétées souvent, mais pour simplifier l'utilisation d'un exemple abstrait, disons que j'ai 20 développeurs différents qui travaillent pour moi - je voudrais qu'ils remplissent une simple victoire avec un projet de base info et ensuite avoir la solution générée automatiquement (systématiquement) avec les couches correctes, les classes utilitaires, les emplacements, les paramètres de publication, etc. Il devient plus compliqué que cela, laissez-moi donc savoir hors ligne si vous voulez plus de détails.
Dupliqué possible de Stackoverflow.com/Questtions/12119667 / ...
@ Xenolightning - Merci, je l'ai examiné en fait une plus tôt, mais cela ne fournit pas un exemple complet pour la création et la sauvegarde de la solution.
@Matthewpatrickcashatt Ahh désolé vous après avoir créé une solution. Les deux ne couvrent pas ça. Ce peut vous aider.
Solution4.Saveas Code> ressemble au candidat à la création du fichier de solutions.
@MatthewPatrickCashatt le type COM créé est
dte2 code> pas
dte code>, voir ma réponse ci-dessous pour le code qui a fonctionné pour moi. Acclamations.