<div dir="ltr">Hi,<br><div class="gmail_extra"><br></div><div class="gmail_extra" style>This is most likely Mono bug in how we load Task libraries. It'll load the version from folder where Microsoft.Common.targets is which is incorrect in your case because it's 4.0 version and not 4.5. Some kind of self contained sample how F# is using Microsoft.Build* would be useful.</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>Marek</div><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div>I'm trying to execute the ResolveAssemblyReferences task using the Microsoft.Build namespace. This (F#) project builds nicely from the command line using xbuild, so the logic is capable. The project file can be found here: <a href="https://github.com/fsharp/fsharpbinding/blob/master/FSharp.AutoComplete/FSharp.AutoComplete.fsproj" target="_blank">https://github.com/fsharp/fsharpbinding/blob/master/FSharp.AutoComplete/FSharp.AutoComplete.fsproj</a> and has TargetFrameworkVersion set to 4.5. If I change TargetFrameworkVersion to 4.0, it works.</div>


<div><br></div><div>I downloaded mono from github and am running the latest version: Mono JIT compiler version 3.0.4 (master/e5fba9d Wed Jan 30 18:38:48 GMT 2013). I also tried with 3.0.3, with the same effect.</div>

<div><br></div><div>The following fsi script is what I am using:</div><div><br></div><div>#r "Microsoft.Build.Engine"<br></div><div><div>#r "Microsoft.Build.Framework"</div><div>

#r "Microsoft.Build.Tasks.v4.0"</div><div>open Microsoft.Build.BuildEngine</div><div>open Microsoft.Build.Framework</div><div>open Microsoft.Build.Tasks</div></div><div><br></div><div><div>let p = new Project()</div>


<div>let cl = new ConsoleLogger(LoggerVerbosity.Diagnostic)</div></div><div><div>p.ParentEngine.RegisterLogger(cl)</div><div>p.Load("FSharp.AutoComplete.fsproj")</div></div><div><br></div><div>p.Build([|"ResolveAssemblyReferences"|])<br>


</div><div><br></div><div>which results in:</div><div><br></div><div><div><path>/FSharp.AutoComplete.fsproj (ResolveAssemblyReferences) -></div><div>/home/scratch/local_mono/lib/mono/4.0/Microsoft.Common.targets (GetFrameworkPaths target) -></div>


<div><br></div><div><span style="white-space:pre-wrap"> </span>/home/scratch/local_mono/lib/mono/4.0/Microsoft.Common.targets: error : Error executing task GetFrameworkPath: The parameter 'FrameworkVersion45Path' was not found for the 'GetFrameworkPath' task.</div>


<div><br></div><div>I found that the framework path for 4.5 doesn't seem to be defined:</div><div><br></div><div><div>let gfp = GetFrameworkPath()</div><div>gfp.FrameworkVersion45Path</div></div><div>

<br></div><div>error FS0039: The field, constructor or member 'FrameworkVersion45Path' is not defined</div><div><br></div><div>Although in mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/GetFrameworkPath.cs has a #if NET_4_5 around FrameworkVersion45Path, and .NET 4.5 is definitely enabled in the configure script, and I have a fully populated lib/mono/4.5 directory.</div>


<div><br></div><div>I also found that the Engine toolsets do not include 4.5. I tried adding it manually, but this didn't help.<br></div><div><br></div><div>I think this is a bug, and would appreciate any hints in tracking it down.</div>


<div><br>Thanks,</div><div>Robin Neatherway</div><div><br></div></div></div>
<br>_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></blockquote></div><br></div></div>