使用Microsoft.Build.BuildEngine
库构建项目文件似乎忽略了该BeforeTargets
属性。
我的项目文件具有以下目标:
<Target Name="MyTestTarget" BeforeTargets="Build">
<Message Importance="High" Text="Running MyTestTarget" />
</Target>
当我使用以下代码(F#,但在C#中也是如此)进行编译时:
open System
open Microsoft.Build.BuildEngine
open Microsoft.Build.Framework
[<EntryPoint; STAThread>]
let main argv =
let engine = new Engine()
engine.RegisterLogger(new ConsoleLogger())
let project = new Project(engine)
project.Load("MyProjectFile.fsproj")
let succeeded = engine.BuildProject(project, "Build")
0
目标"MyTestTarget"
未运行。请注意,当我改用MSBuild.exe
4.0时,"MyTestTarget"
可以正确运行。
我知道MSBuild 4.0中添加了BeforeTargets,如果与的较早版本一起使用,将抛出异常Microsoft.Build
。但是我还没有发现MSBuild 4会忽略BeforeTargets的任何信息。
您正在使用不推荐使用的类型,如果使用新类型,则可以使用:
let projects = new ProjectCollection()
projects.RegisterLogger(new ConsoleLogger())
let project = projects.LoadProject("MyProjectFile.fsproj")
let succeeded = project.Build("Build")
如果您没有看到有关不推荐使用的类型的任何警告,则可能您是在引用旧版本的MSBuild程序集。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句