views:

110

answers:

3

I have an .net assembly build against 3.5 framework. This assembly has a class Foo with two method overrides:

public class Foo {
    public T Set<T>(T value);
    public T Set<T>(Func<T> getValueFunc);
}

I'm referencing this assembly in my asp.net 2.0 web application to use first override of the Set method (without Func).

But on build I get an error saying that I should reference System.Core to use System.Func delegate... but I'm not using this type...

Is there a workaround to solve this?

PS: There is no option to convert my web application targeting 3.5 framework.

A: 

You must upgrade your web-application to .net 3.5 in order to make this work or recompile the assembly from soce targetting .net 2.0 if at all it is possible.

this. __curious_geek
+2  A: 

Convert your web app to use .NET 3.5 (or 4.0). After that, everything will be fine.

If you have to stick to .NET 2.0, here are my ideas

  • Try to reference the System.Core assembly by browsing to the dll and manually adding it. The .NET Framework 3.5 uses the same CLR as 2.0, so it should work if it doesn't have screwed up references. (eg. stuff from .NET 3.5 that you can't add)
Venemo
Solved it by referencing System.Core as described here (http://abdullin.com/journal/2008/12/23/how-to-use-net-35-features-and-c-30-syntax-in-net-20.html). Failed to add reference just by browsing to assembly on my system...
masterik
@masterik - I'm happy you could solve it.
Venemo
A: 

Just because you are not calling a particular overload in your code does not mean that the compiler can ignore it, if it exists in a class you are using then the compiler needs to know what it is. You either need reference System.Core or convert your project to use .net 3.5

Ben Robinson