Determine the Servicepack of .NET Framework Frank Dzaebel, created: 24.3.2005, last updated: 20.12.2008 Category: Versionen, .NET-Version: 1.0
/1.1 /2.0 /3.0 /3.5
The safe method to determine which Servicepack on which .NET Runtime is installed is - looking to the file version of one of the core assemblies inside the installed framework-folder.
While there is no real tool for that at moment, users made their own.
For example see : DotNet VersionCheck Utility,
or Aron Astebners setup verification tool, where you do not have
an overview and must manually check all frameworks and must agree with license,
but proof against a bunch of files.
Here is one possibility from my side, where you have a solid overwiew of all .NET
versions.:
For information material for current servicepacks about .NET Framework see also
here.
Download batch file. After starting, compare the product version(s) here:
@echo off
REM -----------------------------------------------------*
REM * NetVersion.bat *
REM * Show installed Versions (SPs) of .NET Frameworks *
REM * Frank Dzaebel, 20.12.2008 *
REM *----------------------------------------------------*
if"%1"==""goto Start
if"%1"=="/Single"goto Single
if"%1"=="/TempVersion"goto TempVersion
echo wrong Option %1
exit
:Start
echo.
echo.Installed .NET Framework-Versions :
echo.
for /D %%i in (%windir%\Microsoft.NET\Framework\v?"."*) DO call %0 /Single %%i
set info=Hotfix for Microsoft .NET Framework 3.0 - KB958483 - Dez 2008
set asm=%ProgramFiles%\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.dll
if exist "%asm%" call %OutExe% "%asm%""%info%""3.0.6920.1500"set info=Hotfix for Microsoft .NET Framework 3.5 - KB958484 - Dez 2008
set asm=%ProgramFiles%\Reference Assemblies\Microsoft\Framework\v3.5\system.data.services.client.dll
if exist "%asm%" call %OutExe% "%asm%""%info%""3.5.30729.196"
echo.
pause && Goto Finish
:Single
set asm=mscorwks.dll
if exist "%2\%asm%" call %0 /TempVersion %2 "%asm%"set asm=Windows Communication Foundation\Infocard.exe
if exist "%2\%asm%" call %0 /TempVersion %2 "%asm%"set asm=Microsoft.Build.Tasks.v3.5.dll
if exist "%2\%asm%" call %0 /TempVersion %2 "%asm%"
Goto Finish
:TempVersion
set CsFile=%TEMP%\VersionTmp.cs
set OutExe=%TEMP%\VersionTmp.exe
if exist %OutExe% call %OutExe% "%2\%~3" && goto Finish
echo. using System; using System.Diagnostics; >%CsFile%
echo. class Class1 >>%CsFile%
echo. { staticvoid Main(string[] args){ >>%CsFile%
echo. string pfad = Environment.ExpandEnvironmentVariables(args[0]); >>%CsFile%
echo. FileVersionInfo v=FileVersionInfo.GetVersionInfo(pfad); >>%CsFile%
echo. if (args.Length == 3){string info = args[1]; >>%CsFile%
echo. string vCheck = args[2]; >>%CsFile%
echo. if (v.ProductVersion != vCheck) return; >>%CsFile%
echo. Console.WriteLine(info); >>%CsFile%
echo. } Console.WriteLine(v.ToString()); >>%CsFile%
echo. }} >>%CsFile%
%2\csc /nologo /target:exe /out:%OutExe% %CsFile%
%OutExe% "%2\%~3"
:Finish