c# – 使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件

我想阅读,修改和写回csproj文件.
我发现了这段代码,但不幸的是引擎类被折旧了.
Engine engine = new Engine()
Project project = new Project(engine);
project.Load("myproject.csproj");
project.SetProperty("SignAssembly","true");
project.Save("myproject.csproj");

所以我继续根据提示我应该使用Evaluation.ProjectCollection而不是Engine:

var collection = new ProjectCollection();
collection.DefaultToolsversion = "4.0";
var project = new Project(collection);

// project.Load("myproject.csproj") There is NO Load method :-(
project.FullPath = "myproject.csproj"; // Instead of load? Does nothing...

// ... modify the project
project.Save(); // Interestingly there is a Save() method

没有Load方法了.我试图设置属性FullPath,但项目似乎仍然是空的.错过了什么?

(请注意我知道.csproj文件是带有XSD架构的标准XML文件,我知道我们可以使用XDocument或XmlDocument来读/写它.这是一个备份计划.只需看看.Save()方法就可以了.项目类我认为如果我无法加载现有的.csproj,我会错过一些东西.thx)

解决方法

我实际上找到了答案,希望能帮助别人:

我们应该使用ProjectCollection类的工厂方法,而不是创建一个新的Project(…)并尝试.Load(…)它.

// Instead of:
// var project = new Project(collection);
// project.FullPath = "myproject.csproj"; // Instead of load? Does nothing...

// use this:
var project = collection.LoadProject("myproject.csproj")

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么