Boy, Microsoft made it hard to find the location of xsd.exe!
It is actually located like here:
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\xsd.exe
But that is nowhere on the default path, nor in the registry.
What happens during installation of Visual Studio and/or the Microsoft SDK, is that the vsvars32.bat
file of Visual Studio is updated so it can add the location of many tools (including xsd.exe
) to the PATH
.
So the trick is to find the youngest Visual Studio first, then run the according vsvars32.bat, and then xsd.exe is on the path.
–jeroen
via:
- VS71COMNTOOLS VS80COMNTOOLS VS90COMNTOOLS VS100COMNTOOLS VS110COMNTOOLS VS120COMNTOOLS – Google Search.
- Getting Visual Studio installation directory | Tiago Pascoal.
- The pain of vcvars32.bat, and an ant solution Kelly O’Hair’s Weblog.
- SAMPLE/compiler.cmd at master · Ishibasystems/SAMPLE.
Code:
:: Dynamically finds the installed xsd.exe, then calls it with the passed parameters :: test these environment variables that have 110 or 120 in them (future enhancements: support more Visual Studio versions): :: VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ :: VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ :: They contain `vsvars32.bat` which will update the `PATH` so it includes where `xsd.exe` resides setlocal enabledelayedexpansion :: delayed expansion allows for the exclamation marks :: see http://ss64.com/nt/delayedexpansion.html :: see http://stackoverflow.com/questions/22857407/windows-batch-how-to-assign-variable-with-dynamic-name for %%v in (110 120) do set VSCOMNTOOLS=!VS%%vCOMNTOOLS! call :do call "!VSCOMNTOOLS!vsvars32.bat" call :do where xsd.exe xsd.exe %* endlocal goto :eof :do echo %* %* goto :eof
Filed under: .NET, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 2.0, C# 3.0, C# 4.0, C# 5.0, C# 6 (Roslyn), Development, Software Development, Visual Studio 11, Visual Studio 2010, Visual Studio 2013, Visual Studio 2014, Visual Studio and tools, XML/XSD, XSD
