首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用microsoft.build.evaluation以编程方式添加新dll引用

如何使用microsoft.build.evaluation以编程方式添加新dll引用
EN

Stack Overflow用户
提问于 2020-06-20 05:38:35
回答 1查看 253关注 0票数 0

我正在尝试删除一个引用,并将其替换为多个C#项目的新引用。

如何使用microsoft.build.evaluation添加新引用

代码语言:javascript
复制
using Microsoft.Build.Evaluation;
var projCollection  =  new ProjectCollection();
var proj =  projCollection.LoadProject(csproj_filepath);

var items  = proj.GetItems("Reference");

foreach(var item in items)
{
 if(item. EvaluatedInclude.Equals("XYZ_reference"))
  {
   //remove this reference
   // add new reference with new hint path etc
  }
}
proj.Save();

这里有documentation,但在有无元数据包含或用法示例的情况下并不是很有用。

EN

回答 1

Stack Overflow用户

发布于 2020-06-21 19:20:54

我不太明白到底是什么问题。例如:来自我的旧项目的小片段,用于用ProjectReference替换PackageReference,以便更容易地进行本地调试:

代码语言:javascript
复制
    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检测到更改并请求重新加载项目,之后应用更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62478890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档