Visual Studio and Team Foundation Server End of Life Audit
Security SoftwareFind End of Life Visual Studio and Team Foundation Server Installations
Visual Studio is one of the longest-running integrated development environments and still has multiple versions being supported. Versions 2015 through 2022 are currently still being supported and have varying end-of-life dates.
Visual Studio Team Foundation Server (TFS) (now Azure DevOps Server) provides a comprehensive toolchain for team collaboration during the lifecycle of an application. Its current supported versions are versions 2015 through (Azure DevOps Server) 2022.
Both Visual Studio and Team Foundation Server use Microsoft’s fixed lifecycle policy which provides 10 years of support. To help you keep an eye on the end-of-life dates for the various Visual Studio and TFS versions we’ve created a special color-coded report that lists your Visual Studio and TFS installations along with the (LTSC) EOL date and how many days are remaining.
Read all about the Visual Studio and TFS lifecycle in our Visual Studio and Team Foundation Server blog post.
Updates:
- 2022-12-2: EOL dates Visual Studio 2022 added
- 2023-6-7: Added EOL Date Version 17.6 (LTSC channel)
- 2024-01-09: Added EOL Date Version 17.8 (LTSC channel)
- 2024-03-11: TFS and Azure DevOps added
Visual Studio and Team Foundation Server EOL Audit Lansweeper On-Prem Query
Select Distinct Top 1000000 tblAssets.AssetID, tblAssets.AssetName, tblAssets.Domain, tsysAssetTypes.AssetTypename As AssetType, tblAssets.Username, tblAssets.Userdomain, tsysAssetTypes.AssetTypeIcon10 As icon, tblAssets.IPAddress, tsysIPLocations.IPLocation, tblAssetCustom.Manufacturer, tblAssetCustom.Model, tsysOS.OSname As OS, tblAssets.SP, subquery1.Software, subquery1.Version, subquery1.Publisher, subquery1.EOLDate, Case When subquery1.EOLDate <> '' Then Cast(DateDiff(DAY, GetDate(), subquery1.EOLDate) As NVARCHAR) + ' days remaining' End As [Days Remaining], tblAssets.Lastseen, tblAssets.Lasttried, Case When GetDate() > subquery1.EOLDate Then '#ffadad' Else '#d4f4be' End As backgroundcolor From tblAssets Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype Inner Join tsysIPLocations On tsysIPLocations.LocationID = tblAssets.LocationID Inner Join tblState On tblState.State = tblAssetCustom.State Left Join tsysOS On tsysOS.OScode = tblAssets.OScode Left Join (Select tblSoftwareUni.softwareName As Software, tblsoftware.softwareVersion As Version, tblSoftwareUni.SoftwarePublisher As Publisher, Case When tblsoftware.softwareVersion Like '11.0.61219%' Or tblsoftware.softwareVersion Like '11.0.50727%' Then '2023-01-10' When tblsoftware.softwareVersion Like '12.%' Then '2024-04-09' When tblsoftware.softwareVersion Like '14.%' Then '2025-10-14' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '15%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 9 Then '2027-04-13' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '15%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 9 Then '2027-04-13' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '16%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 4 Then '2021-10-01' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '16%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 4 Then '2021-10-01' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '16%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 7 Then '2022-04-12' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '16%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 7 Then '2022-04-12' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '16%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 9 Then '2022-10-11' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '16%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 9 Then '2022-10-11' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '16%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 11 Then '2029-04-10' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '16%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 11 Then '2029-04-10' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 0 Then '2023-07-11' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 2 Then '2024-01-09' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 4 Then '2024-07-11' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 6 Then '2025-01-09' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) < 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 2) As bigint) = 8 Then '2025-07-08' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 0 Then '2023-07-11' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 2 Then '2024-01-09' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 4 Then '2024-07-11' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 6 Then '2025-01-09' When Len(tblsoftware.softwareVersion) - Len(Replace(tblsoftware.softwareVersion, '.', '')) = 3 And tblsoftware.softwareVersion Like '17%' And Cast(ParseName(tblsoftware.softwareVersion, 3) As bigint) = 8 Then '2025-07-08' Else '' End As EOLDate, tblsoftware.AssetID From tblsoftware Inner Join tblSoftwareUni On tblSoftwareUni.SoftID = tblsoftware.softID Where (tblSoftwareUni.softwareName Like '%Visual%Studio%2012%' Or tblSoftwareUni.softwareName Like '%Visual%Studio%2013%' Or tblSoftwareUni.softwareName Like '%Visual%Studio%2015%' Or tblSoftwareUni.softwareName Like '%Visual%Studio%2017%' Or tblSoftwareUni.softwareName Like '%Visual%Studio%2019%' Or tblSoftwareUni.softwareName Like '%Visual%Studio%2022%')) As subquery1 On subquery1.AssetID = tblAssets.AssetID Where subquery1.Software Like '%Visual%Studio%' And subquery1.Software Not Like '%Installer%' And subquery1.Software Not Like '%tools%' And subquery1.Software Not Like '%bootstrapper%' And subquery1.Publisher Like '%Microsoft%' And tblState.Statename = 'Active' Union Select Distinct Top 1000000 tblAssets.AssetID, tblAssets.AssetName, tblAssets.Domain, tsysAssetTypes.AssetTypename As AssetType, tblAssets.Username, tblAssets.Userdomain, tsysAssetTypes.AssetTypeIcon10 As icon, tblAssets.IPAddress, tsysIPLocations.IPLocation, tblAssetCustom.Manufacturer, tblAssetCustom.Model, tsysOS.OSname As OS, tblAssets.SP, subquery1.Software, subquery1.Version, subquery1.Publisher, subquery1.EOLDate, Case When subquery1.EOLDate <> '' Then Cast(DateDiff(DAY, GetDate(), subquery1.EOLDate) As NVARCHAR) + ' days remaining' End As [Days Remaining], tblAssets.Lastseen, tblAssets.Lasttried, Case When GetDate() > subquery1.EOLDate Then '#ffadad' Else '#d4f4be' End As backgroundcolor From tblAssets Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype Inner Join tsysIPLocations On tsysIPLocations.LocationID = tblAssets.LocationID Inner Join tblState On tblState.State = tblAssetCustom.State Left Join tsysOS On tsysOS.OScode = tblAssets.OScode Left Join (Select tblSoftwareUni.softwareName As Software, tblsoftware.softwareVersion As Version, tblSoftwareUni.SoftwarePublisher As Publisher, Case When tblsoftware.softwareVersion Like '8.%' Then '2016-07-12' When tblsoftware.softwareVersion Like '9.%' Then '2020-01-01' When tblsoftware.softwareVersion Like '10.%' Then '2020-07-14' When tblsoftware.softwareVersion Like '11.%' Then '2023-01-10' When tblsoftware.softwareVersion Like '12.%' Then '2024-04-09' When tblsoftware.softwareVersion Like '14.%' Then '2025-10-14' When tblsoftware.softwareVersion Like '15.%' Then '2027-01-11' When tblsoftware.softwareVersion Like '16.%' Then '2028-01-11' When tblsoftware.softwareVersion Like '17.%' Then '2029-04-10' When tblsoftware.softwareVersion Like '18.%' Then '2030-10-08' When tblsoftware.softwareVersion Like '19.%' Then '2033-01-11' Else '' End As EOLDate, tblsoftware.AssetID From tblsoftware Inner Join tblSoftwareUni On tblSoftwareUni.SoftID = tblsoftware.softID Where (tblSoftwareUni.softwareName Like '%Team%Foundation%server%2013%' Or tblSoftwareUni.softwareName Like '%Team%Foundation%server%2015%' Or tblSoftwareUni.softwareName Like '%Team%Foundation%server%2017%' Or tblSoftwareUni.softwareName Like '%Team%Foundation%server%2018%' Or tblSoftwareUni.softwareName Like '%Azure%Devops%server%2019%' Or tblSoftwareUni.softwareName Like '%Azure%Devops%server%2020%'Or tblSoftwareUni.softwareName Like '%Azure%Devops%server%2022%')) As subquery1 On subquery1.AssetID = tblAssets.AssetID Where (subquery1.Software Like '%Team%Foundation%Server%' or subquery1.Software Like '%Azure%Devops%server%') And subquery1.Publisher Like '%Microsoft%' And tblState.Statename = 'Active'