I've got a project that uses a library (from nuget)
The target framework for my project is currently 4.0
I'm using objects and methods from the library, I get intellisense etc...
However, when I build, compilation fails with
The type or namespace could not be found. Are you missing a using directive or assembly reference?
If I change the target framework of the project to 4.5, it compiles.
Is there a way round this?
EDIT
As a specific example, here are the steps to reproduce this problem in one particular case.
Set Target framework to 4.0
Nuget install paymill wrapper
Use one of the types in the Paymill wrapper. For example:
using PaymillWrapper.Models;
using PaymillWrapper.Service;
public class MyClass
{
private readonly PaymentService _paymentService;
}
VS doesn't complain.
Compile
Receive error:
The type or namespace name 'ClientService' could not be found (are you missing a using directive or an assembly reference?)
The answer lies in the build output:
2>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3274: The primary reference "PaymillWrapper" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".
2>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "PaymillWrapper" could not be resolved because it has an indirect dependency on the framework assembly "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0". To resolve this problem, either remove the reference "PaymillWrapper" or retarget your application to a framework version which contains "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
In other words, the NuGet package uses a reference to .NET 4.5, so you can only use it on .NET 4.5+ projects.
You might want to ask the authors of Paymill Wrapper to see if they could publish a version which targets .NET 4 instead.
Note that the NuGet package page even states this:
Dependencies
- .NETFramework 4.5