2017-05-02 7 views
0

次のコード行を書いたので、Microsoft.Build.Evaluation.Project.RemoveItemを使用してプログラムでファイルを削除します。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 value.Soが私を助けてください取得します。

答えて

0

item1はnullです。Microsoft.Build.Evaluation.Project.RemoveItemに関連していません。これは、FirstOrDefaultのGetProjectItemメソッドの問題です。プロジェクトの項目を反復処理すると、EvaluatedIncludeの書式が表示されます。プロパティの先頭に「Compile」= EvaluatedIncludeはありません。 EvaluatedIncludeに一致するフォルダパスを指定するだけです。

var item1 = Helper.GetProjectItem(strIncludeFiles, 
    "Areas\\TEST\\Models\\Doc1Doc3XRefScriptingModel.cs"); 
関連する問題