使用Microsoft.Build.Evaluation.Project.RemoveItem删除了项目

问题描述 投票:0回答:1

我想使用Microsoft.Build.Evaluation.Project.RemoveItem以编程方式删除文件,因为我编写了以下代码行。

var projectFileName = HttpContext.Current.Server.MapPath("~/test.csproj");

var strIncludeFiles = new Microsoft.Build.Evaluation.Project(projectFileName);
var item1 = Helper.GetProjectItem(strIncludeFiles, "\"Compile\"=\"Areas\\TEST\\Models\\Doc1Doc3XRefScriptingModel.cs");
strIncludeFiles.RemoveItem(item1);
strIncludeFiles.Save();
public static ProjectItem GetProjectItem(this Project project, string filePath)
{
    var includePath = filePath.Substring(project.DirectoryPath.Length + 1);
    var projectItem = project.GetItems("Compile").FirstOrDefault(item => item.EvaluatedInclude.Equals(filePath));
    return projectItem;
}

但在item1我总是得到null值。所以请帮助我,我错了,如何删除文件。

c# csproj
1个回答
0
投票

item1为null与Microsoft.Build.Evaluation.Project.RemoveItem无关。这是方法GetProjectItem中FirstOrDefault中的一个问题。如果遍历项目中的项目,您将看到EvaluatedInclude的格式。没有“Compile”=为该属性添加前缀,EvaluatedInclude。只需指定与EvaluatedInclude匹配的文件夹路径即可。

var item1 = Helper.GetProjectItem(strIncludeFiles, 
    "Areas\\TEST\\Models\\Doc1Doc3XRefScriptingModel.cs");
© www.soinside.com 2019 - 2024. All rights reserved.