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

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


我非常确定IVsBuildPropertyStorageIVsBuildPropertyStorage2将不起作用,因为需要ProjectItem,即项目文件中<ItemGroup>元素的一个节点。我想做的是将上述xml添加到<ItemGroup>元素之外。

我正在尝试使用Visual Studio SDK来执行此操作,并且似乎缺少执行此操作的文档和示例。截至撰写本文时,我无法找到一种方法。我真的想避免以XDocumentXmlDocument的形式加载项目文件(在本例中为Test.csproj),并以这种方式添加Target元素节点。看起来很乱,可能会引起更多问题。

另外,我还想忽略一个PostBuildEvent元素,但是我很确定使用PostBuildEvent元素是不可能的

最佳答案

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

10-06 12:04