views:

284

answers:

10

I'm working on some production software, using C# on the .NET framework. I really would like to be able to use LINQ on the project. I believe it requires .NET version 3.5 (correct me if I'm wrong). This application is a commercial software app, required to run on a client's work PC. Is it reasonable to assume they have .NET 3.5, or assume that they won't mind upgrading to the latest version?

I just wanted to feel out what the consensus was as far as mandating framework upgrades to run apps.

+1  A: 

Check out: LinqBridge

Nescio
A: 

So long as you know that you don't need to support Windows 2000 or any older versions of Windows then requiring the latest and greatest framework version doesn't feel too onerous.

Some less fortunate developers are stuck with older framework versions because they need to support older OS versions.

Hamish Smith
+3  A: 

Since .NET Framework itself is distributed for free, people are rarely against upgrading it. However there may be problems with system administrator availability or problems with installation.

Orlangur
+5  A: 

I would say that it isn't safe to assume they have .NET 3.5.

Where as it is very, very unlikely they will have any problems when upgrading, changing anything always carries a risk. I know I wouldn't mind upgrading, but I am a developer.

I think it's one of those things that could go either way, they either won't think twice about it and just upgrade, or they might make an issue out of it. I think it would depend on your customers, 'low-tech' clients may think twice as they may not fully understand it, which would make them nervous.

Spike
A: 

.Net 3.5 is not yet auto updated on Windows PC, I would not bet on a standard customer having it "as is".

Notice you may have to decide if you go for .Net3.5 SP1, since there is a small DataSet backward incompatibility between 3.5 and 3.5SP1 (and maybe some others I did not see).

If your client is a big company you may want to consider that they are often very conservative (My clients are still XP/IE6 and sometime even W2K/IE6).

+1  A: 

Talk to your V.P. of Sales. Seriously. If 3.5 is bleeding edge (I honestly don't know), then odds are he/she will not like the idea very much. If it is a couple of years old, then they'll be more accepting. Being a product that forces upgrades of third party SW is not an insurmountable shortcoming, but it doesn't help.

Kevin Little
+1  A: 

It depends on your target audience and the importance of your app. Generally speaking at this point you probably can't assume that your audience already has .NET 3.5. Installing it can take quite a while, and can be quite tedious if they don't already have the other prerequisites to .NET 3.5.

So unless it's a fairly comprehensive and/or important piece of enterprise software, I would strongly advise against it.

Gerald
+4  A: 

To use LINQ, as you have said, you need to have .NET 3.5. Just to confirm this, the Wikipedia page for LINQ says:

Language Integrated Query (LINQ, pronounced "link") is a Microsoft .NET Framework component that adds native data querying capabilities to .NET languages using a syntax reminiscent of SQL. Many of the concepts that LINQ has introduced were originally tested in Microsoft's Cω research project. LINQ was released as a part of .NET Framework 3.5 on November 19, 2007.

Due to the fact that machines may have some of the previous versions of .NET already installed, you may find that this site, Smallest Dot NET by Scott Hanselman (Microsoft employee) is useful. It works out the smallest updates you need to get up to date (currently 3.5 SP1).

As for whether it is reasonable to expect it on the client's machine, I guess it depends upon what you're creating. My feelings are:

Small low cost applications = PERHAPS NOT YET
A tiny application sold at low cost, perhaps targeting 3.5 is a little early and likely to reduce the size of your audience because of the annoyance factor.

Large commercial applications, with installers = YES
If it is a large commercial application (your baseline specifications are already WInXP or newer running on .NET 2.0), I don't think the customer would care. Put the redistributable on the installer disk!

Remember that adopting any new technology should be done for a number of reasons. What is your need to use LINQ, is it something that would be tough to replicate? If LINQ gives you functionality you really need, your costs and timetable are likely to benefit from selecting it. Your company gain by being able to sell the product for less or increase their margins.

One final option, as pointed out by Nescio, if all you need is Linq to Objects (eg. you don't need Linq to SQL or Linq to XML) then LinqBridge may be an option.

Ray Hayes
A: 

Beware Windows 2000 is not supported on any frameworks above 2.0. So you're application would then only support the following operating systems:

  • Microsoft Windows XP
  • Microsoft Windows Server 2003
  • Windows Vista
  • Windows Server 2008

Good Luck!

Jason Stevenson
A: 

You should read this Hanselman's entry: http://www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramework.aspx It's really interesting if it comes to installing and thus minimalizing installation size of .NET framework. It should be somehow an answer to your question.

Łukasz Sowa