我不太明白问题到底是什么。例如:我的旧项目中的小片段,用于替换PackageReference
以ProjectReference
更轻松地在本地调试:
private void SwitchExplicitPackage(MSProject.Project project, NugetPackage package, Dictionary<string, string> projects)
{
ProjectItem item = project.GetItemsByEvaluatedInclude(package.Identity).FirstOrDefault();
if (item == null)
return;
/*
* Metadata is needed for compatibility with classic projects.
*/
MSProject.Project newProject = _projectHelper.GetLoadedProject(projects[package.Identity]);
item.UnevaluatedInclude = projects[package.Identity];
item.SetMetadataValue(REF_METADATA_PACKAGE, package.Identity);
item.SetMetadataValue(REF_METADATA_PROJECT, newProject.GetPropertyValue("ProjectGuid"));
item.SetMetadataValue(REF_METADATA_NAME , newProject.GetPropertyValue("ProjectName"));
item.ItemType = PROJECT_REF; // ProjectReference
_journalHelper.AddMessage($"Explicit dependency { package.Identity } switched to { projects[package.Identity] }", TaskErrorCategory.Message);
}
事实上,这一切都归结为找到所需的参考并替换属性。保存后,Visual Studio 检测到更改并请求重新加载项目,然后应用更改。