I’m writing an add-in for ReSharper 4. For this, I needed to reference several of ReSharper’s assemblies. One of the assemblies (JetBrains.Platform.ReSharper.Util.dll) contains a System.Linq namespace, with a subset of extension methods already provided by System.Core.
When I edit the code, it creates an ambiguity between those extensions, so that I cannot use OrderBy, for instance. How could I solve this? I would like to use the core LINQ extensions, and not the ones from ReSharper.
I get the following error when trying to compile:
The call is ambiguous between the following methods or properties: ‘
System.Linq.Enumerable.OrderBy<string,int>(System.Collections.Generic.IEnumerable<string>,System.Func<string,int>)' and 'System.Linq.Enumerable.OrderBy<string,int>(System.Collections.Generic.IEnumerable<string>, System.Func<string,int>)’
EDIT: I tried the suggestion below, unfortunately without luck. In the meanwhile, I ‘solved’ the problem by removing references to System.Core. This way I could use the extensions provided by ReSharper DLL files.
I uploaded a sample program where I just imported the ReSharper DLL files I needed. I changed the alias of System.Core to SystemCore, added the extern alias directive, but it still didn’t work. If I missed something, please let me know. P.S. The references are to ReSharper v4.1 DLL files installed in the default directroy in 'C:\Program Files\JetBrains\ReSharper\v4.1\...'.
This is no longer an issue, since I am able to use the LINQ extensions, as provided by ReSharper DLL files, even while targeting .NET 3.0.
Mr. Skeet was right again! I am able to use full LINQ syntax, while targeting .NET 3.0 in the project’s properties and not referencing System.Core!