Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to distribute a .NET library that is .NET 3.5 compliant. The library holds references only to external managed libraries that are targeted against .NET 3.5 client profile or lower. Is there any point in distributing my library as separate .NET 3.5 and 4.0 targeted assembly?

share|improve this question
Unless you use syntax from 4.0 there is no reason to compile aganist it. Of course you do understand that by default trying to mix 3.5 Client Profile and 4.0 would generate a warning about mix assemblies. You do understand that only one version is required since 4.0 is backwards compatible. – Ramhound Dec 29 '11 at 13:31
Confused. 4.0 is backwards comptable which allows the referencing of older framework version .dll-s, but doing so produces a warning about mixed assemblies ? – Dante Dec 29 '11 at 17:29
@Ramhound You can use most of the newer C# syntax and reference older .NET assemblies at the same time. However not all features will be available. For example, you can use LINQ syntax, extension methods, lambda expressions, collection initializers and var while using .NET 2.0 assemblies. Or async and .NET 3.5. – Virtlink Mar 18 '13 at 12:13
@Virtlink - My comment with regards 4.0 syntax was geared more towards the Visual Studio and .NET compiler support. Async was already a feature of .NET 3.5 ( through an additional installation package ) long before .NET 4.0 was released. – Ramhound Mar 27 '13 at 12:26
up vote 2 down vote accepted

If you build an application that targets 4.0, you can reference your library even if it's targeted to 3.5. There's no need to have a separate version for 4.0. Unless of course, you use features specific to 4.0 such as default method arguments or parallel classes among others.

BTW, using a <3.5 library in 4.0 will not cause any warnings about mixed assemblies (that i know of).

share|improve this answer
Actually default method arguments (and named parameters) are a compiler feature, not a framework feature. You can target .NET 3.5 and still use those features, they just won't compile with older compilers (like what's built into VS 2008). – R0MANARMY Feb 7 '13 at 15:47

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.