[Mono-dev] Microsoft.Build: The parameter 'FrameworkVersion45Path' was not found for the 'GetFrameworkPath' task
robin.neatherway at gmail.com
Thu Jan 31 16:48:13 UTC 2013
The small script I gave at the top is sufficient to observe the behaviour.
If you put it in a file, say "Script.fsx" and run it with `fsharpi
Script.fsx`, you will be able to reproduce the behaviour. Likewise for the
GetFrameworkPath fragment (once the DLLs have been loaded with #r). Would a
compilable version be more helpful?
I had another look in my lib/mono/4.5 directory and found that the
Microsoft.Build.* DLLs there are symlinks to the gac 4.0 versions:
lib/mono/4.5 $ ls -l Microsoft.Build.*
lrwxrwxrwx 1 68 Jan 30 18:50 Microsoft.Build.dll ->
lrwxrwxrwx 1 82 Jan 30 18:50 Microsoft.Build.Engine.dll ->
lrwxrwxrwx 1 88 Jan 30 18:50 Microsoft.Build.Framework.dll ->
lrwxrwxrwx 1 90 Jan 30 19:26 Microsoft.Build.Tasks.v4.0.dll ->
lrwxrwxrwx 1 98 Jan 30 18:50 Microsoft.Build.Utilities.v4.0.dll ->
However the DLLs in lib/mono/4.0 are not symlinks, they are normal files.
The ones in the GAC are the same as those that are in class/lib/net_4_5/
after building, while the other files in lib/mono/4.0 are the same as those
Perhaps this is the source of the problem.
On Thu, Jan 31, 2013 at 3:29 PM, Marek Safar <marek.safar at gmail.com> wrote:
> 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.
> 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
>> https://github.com/fsharp/fsharpbinding/blob/master/FSharp.AutoComplete/FSharp.AutoComplete.fsproj and
>> has TargetFrameworkVersion set to 4.5. If I change TargetFrameworkVersion
>> to 4.0, it works.
>> 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.
>> The following fsi script is what I am using:
>> #r "Microsoft.Build.Engine"
>> #r "Microsoft.Build.Framework"
>> #r "Microsoft.Build.Tasks.v4.0"
>> open Microsoft.Build.BuildEngine
>> open Microsoft.Build.Framework
>> open Microsoft.Build.Tasks
>> let p = new Project()
>> let cl = new ConsoleLogger(LoggerVerbosity.Diagnostic)
>> which results in:
>> <path>/FSharp.AutoComplete.fsproj (ResolveAssemblyReferences) ->
>> (GetFrameworkPaths target) ->
>> /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.
>> I found that the framework path for 4.5 doesn't seem to be defined:
>> let gfp = GetFrameworkPath()
>> error FS0039: The field, constructor or member 'FrameworkVersion45Path'
>> is not defined
>> Although in
>> 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
>> I also found that the Engine toolsets do not include 4.5. I tried adding
>> it manually, but this didn't help.
>> I think this is a bug, and would appreciate any hints in tracking it down.
>> Robin Neatherway
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Mono-devel-list