Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Method not fournd: SystemCollections.Generic IEqualityComparer'1 #6

Closed
KevinRansom opened this issue Jan 14, 2015 · 2 comments
Closed

Comments

@KevinRansom
Copy link
Member

Opened by jackfoxy on codeplex

12/18/14 daily build found this issue at runtime:

System.MissingMethodException : Method not fournd: SystemCollections.Generic IEqualityComparer'1

 let checkForColumnHeaderDifference (expected: seq<string>) (actual: seq<string>) =
    let expected = HashSet(expected, HashIdentity.StringIgnoreCase)

fails on "let expected = ..." 
 System.Collections.Generic.HashSet 

(Having problems getting the debugger to run to the affected line (VM issue) ...so I can't currently tell you the values of "expected" and "actual" coming into the function.)

comments
jackfoxy wrote Dec 23, 2014 at 7:55 PM [x]
Update: fixed my VM, and there is nothing remarkable about the data coming into the function, simply a string sequence of length 13.

latkin wrote Dec 23, 2014 at 10:20 PM [x]
Can you provide a ZIP of a repro solution?

A few other questions -- What version of FSharp.Core are you using? What .NET version/profile are you targeting? What is HashIdentity.StringIgnoreCase?

jackfoxy wrote Dec 24, 2014 at 10:13 AM [x]

I researched this issue on a VM on my work machine. I won't have access again until 1/5/15. If this issue is still open then I will attempt a repro solution.

The original app was built on FSharp.Core, 4.3.1.0. I simply changed the Target F# runtime to F#4.0 within the project property page of VS 2015 preview and rebuilt the solution within VS.

A repro app "should" just consist of the following:

open System.Collections.Generic

let checkForColumnHeaderDifference (expected: seq) (actual: seq) =
let expected = HashSet(expected, HashIdentity.StringIgnoreCase)
expected


>>>>vladima wrote Dec 24, 2014 at 11:14 AM [x] 

>>>>Given that FSharp.Core does not expose StringIgnoreCase on  HashIdentity module I suspect that repro should include something else (that presumably defines this extrinsic extension property)

>>>>>jackfoxy wrote Dec 24, 2014 at 11:33 AM [x] 

>>>>>@vladima right you are. I found this additional code:
````fsharp
module HashIdentity =
        let ByProjection (f: 'A -> 'B) (eq: IEqualityComparer<'B>) : IEqualityComparer<'A> =
            let hasher x = eq.GetHashCode(f x)
            let equality x y = eq.Equals(f x, f y)
            HashIdentity.FromFunctions hasher equality
        let StringIgnoreCase =
            HashIdentity.Structural<string>
            |> ByProjection (fun (x: string) -> x.ToLower())

vladima wrote Dec 24, 2014 at 11:51 AM [x]

Is this code located in the same project or in different dll? For the latter case - what version of FSharp.Core is referenced in this assembly?

vladima wrote Dec 24, 2014 at 12:01 PM [x]

Ok, I have a guess: can you check if autogeneration of binding redirects is enabled in the repro project (http://msdn.microsoft.com/en-us/library/2fc472t2%28v=vs.110%29.aspx), enable it if it is disabled and check if the problem still exists

jackfoxy wrote Dec 24, 2014 at 2:20 PM [x]
All the code is in the same project, and in fact in the same file.

There is no specified in the fsproj file, but there is true

Like I said above, I will not be able to work on the VM I have created for testing F#4.0 again until 1/5/15.

dsyme wrote Today at 1:23 AM [x]

It looks important to get to the bottom of this in case it is somehow related to the perf improvements for hash/compare/equality in F# 4.0 (though I think the likely solution is to add AutoGenerateBindingRedirects)

jackfoxy wrote Today at 5:00 PM [x]

My most recent research led me to suspect this issue involves the Target Framework .NET Portable Subset (.NET Framework 4.5, Windows 8) and Target F# runtime F# 4.0 (FSharp.Core, 3.7.4.0), but in attempting to set up a simple problem replication project that target framework is not available to me in VS2015, and the only target runtime available is F# 4.0 (FSharp.Core, 4.4.0.0).

As another issue in creating a replication project, my test environment somehow regressed to where I am failing on issue https://visualfsharp.codeplex.com/workitem/176, and I currently cannot replicate this reported issue. Fixing 176 should take precedence.

@jackfoxy
Copy link

Cannot replicate with Visual FSharp 4.0 Preview 01-15-2015, suggest closing this issue.

@dsyme
Copy link
Contributor

dsyme commented Jan 19, 2015

OK, I'm closing this

@dsyme dsyme closed this as completed Jan 19, 2015
liboz pushed a commit to liboz/visualfsharp that referenced this issue Oct 14, 2016
nelak pushed a commit to nelak/visualfsharp that referenced this issue Nov 20, 2016
smoothdeveloper pushed a commit to smoothdeveloper/visualfsharp that referenced this issue Jan 22, 2017
minor changes to LanguageServiceProfiling:
cartermp added a commit to cartermp/fsharp that referenced this issue Jan 7, 2020
# This is the 1st commit message:

ref -> mutable in more places in the compiler

# The commit message dotnet#2 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20191229.1
#
# - Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19629.1

# The commit message dotnet#3 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20191230.1
#
# - Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19630.1

# The commit message dotnet#4 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20191231.1
#
# - Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19631.1

# The commit message dotnet#5 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20200101.1
#
# - Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20051.1

# The commit message dotnet#6 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20191216.5 (dotnet#8079)
#
# - Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19616.5

# The commit message dotnet#7 will be skipped:

# dispose fsi at the end of a scripting session (dotnet#8084)
#

# The commit message dotnet#8 will be skipped:

# Added static link tests and extended CompilerAssert (dotnet#8101)
#
# * Changed CompilerAssert to static class. Added Compile/Execute methods that take a Compilation description. Added static link tests
# 
# * Hiding compilation description internals
# 
# * Added another test to check for sanity
# 
# * Making a few optional parameters
# 
# * Hiding internals of CompilationReference

# The commit message dotnet#9 will be skipped:

# Parameterize product version (dotnet#8031)
#
# * Parameterize Product details
# 
# * fcs
# 
# * Repack pkgdef
cartermp added a commit that referenced this issue Jan 7, 2020
…8063)

* # This is a combination of 9 commits.
# This is the 1st commit message:

ref -> mutable in more places in the compiler

# The commit message #2 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20191229.1
#
# - Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19629.1

# The commit message #3 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20191230.1
#
# - Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19630.1

# The commit message #4 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20191231.1
#
# - Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19631.1

# The commit message #5 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20200101.1
#
# - Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20051.1

# The commit message #6 will be skipped:

# Update dependencies from https://github.com/dotnet/arcade build 20191216.5 (#8079)
#
# - Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19616.5

# The commit message #7 will be skipped:

# dispose fsi at the end of a scripting session (#8084)
#

# The commit message #8 will be skipped:

# Added static link tests and extended CompilerAssert (#8101)
#
# * Changed CompilerAssert to static class. Added Compile/Execute methods that take a Compilation description. Added static link tests
# 
# * Hiding compilation description internals
# 
# * Added another test to check for sanity
# 
# * Making a few optional parameters
# 
# * Hiding internals of CompilationReference

# The commit message #9 will be skipped:

# Parameterize product version (#8031)
#
# * Parameterize Product details
# 
# * fcs
# 
# * Repack pkgdef

* no ilread
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants