gpt4 book ai didi

c# - 使用 Microsoft.Build.Evaluation(而不是引擎)以编程方式修改 csproj 文件

转载 作者:太空狗 更新时间:2023-10-29 21:17:31 25 4
gpt4 key购买 nike

我想读取、修改和写回 csproj 文件。我找到了这段代码,但不幸的是 Engine 类已贬值。

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() Project 类上的方法如果我无法加载现有的 .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")

关于c# - 使用 Microsoft.Build.Evaluation(而不是引擎)以编程方式修改 csproj 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22957913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com