c# - 以编程方式在 Visual Studio 项目文件中添加和编辑目标

标签 c# .net visual-studio-2010 msbuild visual-studio-sdk

我正在尝试以编程方式将以下目标添加到我的 Visual Studio 项目文件中。

<Target Name="PostBuildEvent" Condition="'$(PostBuildEvent)'!=''" DependsOnTargets="$(PostBuildEventDependsOn)">
      <Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" IgnoreExitCode="true" />
</Target>

我很确定 IVsBuildPropertyStorageIVsBuildPropertyStorage2将不起作用,因为需要一个 ProjectItem 也就是来自 <ItemGroup> 的节点项目文件中的元素。我想做的是在 <ItemGroup> 之外添加上面的 xml元素。

我正在尝试使用 Visual Studio SDK 来执行此操作,但似乎缺少有关执行此操作的文档和示例。截至这篇文章的时间我无法找到这样做的方法。我真的想避免将项目文件(在本例中为 Test.csproj)加载为 XDocumentXmlDocument并以这种方式添加目标元素节点。它看起来很乱,可能会导致更多问题。

作为额外的奖励,我还想 IgnoreOnExit 一个 PostBuildEvent元素,但我很确定这对于 PostBuildEvent 是不可能的元素

最佳答案

尝试使用 AddTarget ProjectRootElement 上的方法Microsoft.Build.Construction 命名空间中的类。该命名空间用于读取和写入 MSBuild 文件。

关于c# - 以编程方式在 Visual Studio 项目文件中添加和编辑目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4511344/

相关文章:

c# - 2维结构表

c++ - 这个派生类是如何抽象的呢?

.net - MSbuild - 在构建服务器上添加第 3 方引用库的最佳做法是什么?

c# - 在 Unity App.Config 文件中包含通用类

.net - Socket.Receive(byte [])是否将仅返回一个UDP数据包?

c# - 如何在 LINQ 查询中放置条件 WHERE 子句

c# - 基于 XSD 创建多个类文件

.net - 用于 Web 服务数据源的 ORM?

c# - 为什么推荐继承Exception而不是ApplicationException

c# - 类内函数的层次结构 (C#)