0

Ich entwickle Projektvorlagen für Universal Windows Platform. In UWP-Projekten können wir Referenzen auf drei Arten hinzufügen: Assemblies, NuGet und SDK. So fügen Sie Baugruppen ich einfachWie programmgesteuert SDK zu einem UWP-Projekt hinzufügen?

VSProject.References.Add("MyAssembly.dll")

Und ich kann NuGet Pakete mit NuGet.VisualStudio DLL installieren. Aber wie kann ich SDK programmatisch in ein UWP-Projekt wie Referenzen und NuGet-Pakete hinzufügen?

enter image description here

Antwort

1

Sie können additem Methode von Microsoft.Build.Evaluation.Project verwenden, es zu erreichen. Hier ist eine Beispiel-Demo für Ihre Referenz.

DTE2 dte = this.ServiceProvider.GetService(typeof(DTE)) as DTE2; 
EnvDTE.Project currentProject = dte.Solution.Projects.Item(1); 
string projectPath = currentProject.FullName; 
var project = new Microsoft.Build.Evaluation.Project(projectPath); 

var proItem = project.GetItems("SDKReference").FirstOrDefault(); 

project.AddItem("SDKReference", "WindowsTeam, Version=10.0.14393.0", new[] 
         { 
          new KeyValuePair<string, string>("Name", "Windows Team Extensions for the UWP") 
         }); 

project.Save(); 

Update:

DTE2 dte = this.ServiceProvider.GetService(typeof(DTE)) as DTE2; 
EnvDTE.Project currentProject = dte.Solution.Projects.Item(1); 
string projectPath = currentProject.FullName; 

Microsoft.Build.Evaluation.ProjectCollection projectCollection = new Microsoft.Build.Evaluation.ProjectCollection(); 

var project = projectCollection.LoadProject(projectPath);    projectCollection.UnloadProject(project); 

project.AddItem("SDKReference", "WindowsTeam, Version=10.0.14393.0", new[] 
         { 
          new KeyValuePair<string, string>("Name", "Windows Team Extensions for the UWP") 
         }); 

project.Save(); 

projectCollection.LoadProject(projectPath); 
+0

Danke. Es funktioniert wie erwartet. Aber nach dem Erstellen eines Projekts wird ein Dialog angezeigt, der besagt: "Projekt außerhalb der Umgebung modifiziert". (siehe [hier] (https://ibb.co/mvQZna) für Screenshot) Wie kann ich das vermeiden? Bitte helfen Sie. –

+0

Bitte überprüfen Sie diesen Thread: https://stackoverflow.com/questions/44117270/visual-studio-extension-reload-project, entladen Projekt-> ändern csproj Datei -> Projekt erneut laden. –

+0

Die Lösung dieses Threads funktioniert nur für Add-Ins. Es funktioniert nicht für Projektvorlagen. –

0

ich den sdk Eintritt in die replacementdicationary hinzugefügt haben, wie unten und hat eine Fund Zeichenfolge wie $ myuwpsdk $ in die Projektdatei der Vorlage. Es funktioniert wie erwartet. Es könnte eine falsche Methode oder eine temporäre Arbeit sein. Aber es vervollständigt meine Anforderung.

replacementsDictionary["$myuwpsdk$"] = "<ItemGroup><SDKReference Include = \"WindowsTeam, Version=10.0.14393.0\"> <Name>Windows Team Extensions for the UWP</Name> </SDKReference> </ItemGroup>"; 
Verwandte Themen