Eternal.SourceServerIndexer 1.0.5

dotnet add package Eternal.SourceServerIndexer --version 1.0.5
                    
NuGet\Install-Package Eternal.SourceServerIndexer -Version 1.0.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Eternal.SourceServerIndexer" Version="1.0.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Eternal.SourceServerIndexer" Version="1.0.5" />
                    
Directory.Packages.props
<PackageReference Include="Eternal.SourceServerIndexer" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Eternal.SourceServerIndexer --version 1.0.5
                    
#r "nuget: Eternal.SourceServerIndexer, 1.0.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Eternal.SourceServerIndexer@1.0.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Eternal.SourceServerIndexer&version=1.0.5
                    
Install as a Cake Addin
#tool nuget:?package=Eternal.SourceServerIndexer&version=1.0.5
                    
Install as a Cake Tool

Eternal Source Server Indexer

Eternal.SourceServerIndexer utility

Copyright 2025 Eternal Developments, LLC. All Rights Reserved.

License

MIT

Functionality

SourceServerIndexer

This takes the gnarly decades old Perl script and reimplements as C# Net9.0. This allows logging and debugging of the process. It also automatically detects the workspace and Perforce settings based on P4PORT and the working directory. The log will also show the connection information it finds making debugging the process much easier.

Background: https://docs.microsoft.com/en-us/windows/win32/debug/source-server-and-source-indexing

The Debugging Tools for Windows are part of the Windows SDK, but not installed by default. Go to Settings → Apps and Features → Search for Windows Software Development Kit → Select change from the drop down.

Microsoft documentation for installing Debugging Tools for Windows: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools

The jist is that given a source server indexed pdb, the Visual Studio debugger will automatically sync up the correct source file from Perforce. When debugging minidumps (say from WER), if you know the change the binary that caused the minidump was built from, you can sync up the entire stream. This can be very time comsuming for large codebases. If the pdb file source server indexed, the debugger will lazily retrieve only the required source files.

Using a Symbol Server: https://docs.microsoft.com/en-us/windows/win32/debug/using-symstore?redirectedfrom=MSDN

To create a symbol store: symstore add /s d:\SymStore /f D:\Symbols\SymbolFile.pdb /t ProjectName

To test, enable source server support and diagnostics in Visual Studio in Options → Debugging → General. With the above enabled, you should see lines like this:

SRCSRV: p4.exe -p server:1666 print -o "C:\\Users\\john.scott\\AppData\\Local\\SourceServer\\REPOSITORY\\Folder\\Folder\\FileName.cpp\\3\\FileName.cpp" -q "//stream/tasks/branch/Folder/Folder/FileName.cpp#3"

Changes 25th November 2025

Updated to .net10. Updated dependencies.

Changes 20th June 2025

Updated to .net9

Notes

Full Doxygen documentation at https://eternaldevelopments.com/docs

Epic has added Source Server support to their build suite (for a comparison) - check out \Engine\Source\Programs\AutomationTool\Win\Tasks\SrcSrvTask.cs

There is a basic unit test to validate the environment but more tests could be added.

I have no intention of maintaining backwards compatability, but will endeavor to mention if I do.

This utility appeals to the most niche aspects of development, but if you feel like making a donation, please send DOGE to DFbEt36Qg2s2CVAdk5hZgRJfH8p1g6tW9i or buy a #programmerlife t-shirt

Product Compatible and additional computed target framework versions.
.NET net10.0-windows10.0.22000 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.5 167 11/25/2025