당신은 그것을 달성하기 위해 Microsoft.Build.Evaluation.Project의 방법을 addItem를 사용할 수 있습니다. 참조 용 샘플 데모입니다.
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();
업데이트 : 나는 다음과 같은 replacementdicationary에 SDK 항목을 추가하고 템플릿의 프로젝트 파일에 $ myuwpsdk $로 찾기 문자열을 추가 한
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);
감사합니다. 예상대로 작동합니다. 그러나 프로젝트가 생성 된 후 "프로젝트가 환경을 수정했습니다."라는 대화 상자가 나타납니다. (스크린 샷은 [here] (https://ibb.co/mvQZna)를 참조하십시오) 어떻게 이것을 피할 수 있습니까? 도와주세요. –
이 스레드를 확인하십시오 : https://stackoverflow.com/questions/44117270/visual-studio-extension-reload-project, 프로젝트 언로드 -> csproj 파일 수정 -> 프로젝트를 다시로드하십시오. –
해당 스레드의 솔루션은 추가 기능에서만 작동합니다. 그것은 프로젝트 템플릿을 위해 작동하지 않습니다. –