views:

146

answers:

3

We have to install Windows SDK along with .NET Framework. Why do we need the SDK if we have the framework?

EDIT:

This isn't just the case for .net development. Also, if you want to develop Silverlight apps, you have to install additional sdk. Why?

A: 

the .NET framework only covers managed application and is a subset of windows API. The Windows SDK (or whatever its called today) is a larger set of API which includes API which has not been wrapped by managed code yet.

Andrew Keith
@Andrew Keith : There was some lc.exe issue (please google..known issue) when I compiled using VS2008 and the IDE instructed me to set the lc.exe path which pointed to a location in sdk. Hence I had to install SDK.
Sandbox
+2  A: 

Basically .NET framework includes most of tools required for basic development - compilers, msbuild engine for projects. However, some specific tasks - assmebly linking, code generation for COM and webservices, CIL analysis etc. - require additional set of tools, which are included into Windows SDK.

IMHO .NET framework distribution is already large as it is, it won't be good if it grows yet more because of these tools.

elder_george
@elder_george: Thanks for the answer. We don't have to distribute framework libraries and expect it to be there on deployment machine. Does it mean that if we use something from SDK we will have to distribute that too (as we won't expect that end user to install windows sdk on his/her machine)?
Sandbox
Normally, you don't need it. All the libraries you usually reference, belong to framework, so there shouldn't be any dependecies. Windows SDK is for compiling, not for runtime (moreover, I suspect that redistribution of some its parts is forbidden). The only tool from it I find useful after build is `gacutil`, but I can live without it.
elder_george
A: 

Are you talking about Windows SDK being installed along with .NET framework when one installs Visual Studio?

If yes, this is because Windows SDK is (majorly) required for unmanaged development.

Also in the C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin folder you have tools like mt.exe which can be used to embed manifest externally into exes & dlls.(for managed apps too)

Ganesh R.