Welcome to msbuildpy’s documentation!¶
msbuildpy is a small python library for locating MSBuild, xbuild and dotnet build binaries.
Works for msbuild/xbuild/dotnet build major versions 12+
msbuildpy can be used on Windows and Nix like platforms
It also contains tools to:
- Directly read the CorFlags from .NET Assemblies/Executables.
- Determine system architecture and host OS.
- Find mono VM installations.
Example:
import msbuildpy
from msbuildpy.sysinspect import get_mono_vm, is_windows, ARCH64, ARCH32
from msbuildpy import corflags
for i in msbuildpy.find_msbuild('msbuild >=12.* | xbuild >=12.* | dotnet build *.*'):
print(i)
print('\n')
print(get_mono_vm())
print(get_mono_vm(arch=ARCH32))
print(get_mono_vm(arch=ARCH64))
print(is_windows())
test = corflags.read_file(
'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe'
)
print('\n')
print(test.pe_format)
print(test.is_signed)
print(test.is_pure_il)
print(test.processor_architecture)
print(test.clr_header_major)
print(test.clr_header_minor)
print(test.clr_header)
Output:
ToolEntry(name='msbuild', version=(15, 1, 1012, 6693), arch='64bit', edition='community', path='C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\amd64\\MSBuild.exe')
ToolEntry(name='msbuild', version=(15, 1, 1012, 6693), arch='64bit', edition='professional', path='C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\MSBuild\\15.0\\Bin\\amd64\\MSBuild.exe')
ToolEntry(name='msbuild', version=(15, 1, 1012, 6693), arch='64bit', edition='enterprise', path='C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\MSBuild\\15.0\\Bin\\amd64\\MSBuild.exe')
ToolEntry(name='msbuild', version=(15, 1, 1012, 6693), arch='64bit', edition='standalone', path='C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\MSBuild\\15.0\\Bin\\amd64\\MSBuild.exe')
ToolEntry(name='msbuild', version=(15, 1, 1012, 6693), arch='32bit', edition='community', path='C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe')
ToolEntry(name='msbuild', version=(15, 1, 1012, 6693), arch='32bit', edition='professional', path='C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\MSBuild\\15.0\\Bin\\MSBuild.exe')
ToolEntry(name='msbuild', version=(15, 1, 1012, 6693), arch='32bit', edition='enterprise', path='C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\MSBuild\\15.0\\Bin\\MSBuild.exe')
ToolEntry(name='msbuild', version=(15, 1, 1012, 6693), arch='32bit', edition='standalone', path='C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\MSBuild\\15.0\\Bin\\MSBuild.exe')
ToolEntry(name='msbuild', version=(14, 0, 25123, 0), arch='64bit', edition=None, path='C:\\Program Files (x86)\\MSBuild\\14.0\\bin\\amd64\\MSBuild.exe')
ToolEntry(name='msbuild', version=(14, 0, 25123, 0), arch='32bit', edition=None, path='C:\\Program Files (x86)\\MSBuild\\14.0\\bin\\MSBuild.exe')
ToolEntry(name='msbuild', version=(12, 0, 21005, 1), arch='64bit', edition=None, path='C:\\Program Files (x86)\\MSBuild\\12.0\\bin\\amd64\\MSBuild.exe')
ToolEntry(name='msbuild', version=(12, 0, 21005, 1), arch='32bit', edition=None, path='C:\\Program Files (x86)\\MSBuild\\12.0\\bin\\MSBuild.exe')
ToolEntry(name='xbuild', version=(14, 0), arch='64bit', edition=None, path='C:\\Program Files\\Mono\\lib\\mono\\xbuild\\14.0\\bin\\xbuild.exe')
ToolEntry(name='xbuild', version=(14, 0), arch='32bit', edition=None, path='C:\\Program Files (x86)\\Mono\\lib\\mono\\xbuild\\14.0\\bin\\xbuild.exe')
ToolEntry(name='xbuild', version=(12, 0), arch='64bit', edition=None, path='C:\\Program Files\\Mono\\lib\\mono\\xbuild\\12.0\\bin\\xbuild.exe')
ToolEntry(name='xbuild', version=(12, 0), arch='32bit', edition=None, path='C:\\Program Files (x86)\\Mono\\lib\\mono\\xbuild\\12.0\\bin\\xbuild.exe')
ToolEntry(name='dotnet build', version=(15, 1, 1012, 6693), arch='64bit', edition=None, path='C:\\Program Files\\dotnet\\dotnet.exe')
MonoVm(version=(4, 8, 0), arch='64bit', path='C:\\Program Files\\Mono\\bin\\mono.exe')
MonoVm(version=(4, 8, 0), arch='32bit', path='C:\\Program Files (x86)\\Mono\\bin\\mono.exe')
MonoVm(version=(4, 8, 0), arch='64bit', path='C:\\Program Files\\Mono\\bin\\mono.exe')
True
PEFormat.PE32
True
True
AssemblyArchitecture.X86
2
5
(2, 5)
See: msbuildpy.find_msbuild() for more version filter expression examples.