Ok podstawie VS 2017 I stworzył jedną VSIX projektu jeden Library Project i jeden element szablonu projektu
1- W projekcie szablonu Element tworzę zarówno pliki szablonu elementu jeden i dwa. Dodałem również informacje o wizycie rozszerzonej w pliku vstemplate, takim jak ten WizardInementation, to mój projekt biblioteki klas.
2- Dodałem TemplateWizardInterface Nuget Package do biblioteki klas Project i implementuję IWizard w klasie. W ProjectItemFinishedGenerating przenoszę drugi element szablonu, taki jak plik, do drugiego folderu lokalizacji projektu i dodam go do projektu programowo za pomocą Microsoft.Build.Evaluation.ProjectCollection w Microsoft.Build dll.
public void ProjectItemFinishedGenerating(ProjectItem projectItem)
{
if (projectItem.FileNames[0].Contains("DTO") || projectItem.FileNames[0].Contains("Message"))
{
string newPath = Path.GetFullPath(Path.Combine(projectItem.FileNames[0], @"..\Project2\"));
if (!Directory.Exists(newPath))
{
MessageBox.Show($"Message path does not exist. \r\n {newPath}");
}
else
{
var newFullPath = Path.Combine(newPath, projectItem.Name);
File.Move(projectItem.FileNames[0], newFullPath);
var p = Microsoft.Build.Evaluation.ProjectCollection.GlobalProjectCollection.GetLoadedProjects(PathInformation.MessageProjectPath).FirstOrDefault();
if (p == null)
p = new Microsoft.Build.Evaluation.Project(PathInformation.MessageProjectPath);
var res = p.AddItem("Compile", newFullPath);
p.Save();
if(res == null)
{
MessageBox.Show("Nothing added to project");
}
else
{
MessageBox.Show($"{res.Count()} item added to project");
}
}
}
}
więcej informacji o IWizard spojrzeć na ten link https://msdn.microsoft.com/en-us/library/ms185301.aspx
3- W projekcie VSIX dodałem biblioteki klas I stworzył w drugim etapie do aktywów według rodzaju montażu w vsixmanifest. Dodałem także projekt szablonu elementu jako plik i przekazuję plik zip utworzony przez VS po kompilacji projektu elementu w koszu.
Nie jestem pewien, jak to zadziała. W jaki sposób szablon będzie wiedział o tym, którego projektu użyć dla przedmiotu 2? –
Mogę po prostu być na stałe, ale to właśnie próbuję sprawdzić, czy to możliwe, czy nie. – Eccentrikit
Poszukuję również odpowiedzi na to pytanie. –