Burst not found MSVC installation

Hello,

I downloaded GitHub - Unity-Technologies/multiplayer: Unity multiplayer packages and samples and I am trying to do some cool stuff.

It uses ECS, Burst, and lot of new stuff.

I create my little game (I am on MacOS), I build for MacOS and run with no problem.
But when I want to build for Windows, I got this error.

Failed running /Users/lbrugero/Library/Unity/cache/packages/packages.unity.com/com.unity.burst@0.2.4-preview.37/.Runtime/bcl.exe @/var/folders/xq/sy3r0y3d6qn4gng7vmf0xfd80000gn/T/tmp39e375aa.tmp

System.Exception: No MSVC installations were found on the machine!
  at Unity.IL2CPP.Building.ToolChains.MsvcVersions.MsvcInstallation.GetLatestFunctionalInstallation (Unity.IL2CPP.Common.Architecture architecture) [0x00082] in <d6ace09942684ce399de1cb371f766e9>:0
  at Unity.IL2CPP.Building.ToolChains.MsvcDesktopToolChain.get_MsvcInstallation () [0x00024] in <d6ace09942684ce399de1cb371f766e9>:0
  at Unity.IL2CPP.Building.ToolChains.MsvcToolChain.GetToolchainInfoForOutput () [0x00011] in <d6ace09942684ce399de1cb371f766e9>:0
  at Burst.Compiler.IL.Aot.AotLinker.Link (System.Collections.Generic.IEnumerable`1[T] objFiles, System.String outPath) [0x00021] in <9c22944a0d3942d0b3de41ca514e1ec6>:0
  at Burst.Linker.Program.Main (System.String[] args) [0x0017b] in <9c22944a0d3942d0b3de41ca514e1ec6>:0
Usage: blink.exe [options] <input .o/.obj/.ll files...>
      --help                 Show Help
      --platform=VALUE       Target Platform <Windows|macOS|Linux|Android|iOS|
                               PS4|XboxOne|Wasm|UWP>
      --target=VALUE         Target CPU <Auto|X86_SSE2|X86_SSE4|X64_SSE2|X64_
                               SSE4|AVX|AVX2|AVX512|WASM32|ARMV7A_NEON32|ARMV8A_
                               AARCH64|THUMB2_NEON32>
      --il2cpp-plugin-folder=VALUE
                             Plugin folder
      --output=VALUE         Output shared library file

An unexpected exception occurred:
stderr:

System.InvalidOperationException: The linker failed. Check previous exception in the log
  at Burst.Compiler.IL.Aot.AotCompiler.CallLinkerProcess (Burst.Backend.TargetPlatform platform, Burst.Backend.TargetCpu targetCpu, System.Collections.Generic.List`1[T] plugins, System.Collections.Generic.List`1[T] inputFiles, System.String outputFile) [0x00141] in <37bebafd236f4ccd943dc039a926a017>:0
  at Burst.Compiler.IL.Aot.AotCompiler.Link (Burst.Backend.Module module, Burst.Compiler.IL.Aot.AotCompilerOptions compilerOptions) [0x00130] in <37bebafd236f4ccd943dc039a926a017>:0
  at Burst.Bcl.BclApp.CompileAndLink (System.Collections.Generic.List`1[T] methodsToCompile) [0x00033] in <b81f17870d4f4ef0b5c9ddcb359b62f4>:0
  at Burst.Bcl.Program.Main (System.String[] args) [0x000d7] in <b81f17870d4f4ef0b5c9ddcb359b62f4>:0

UnityEngine.Debug:LogError(Object)
UnityEditorInternal.Runner:RunProgram(Program, String, String, String, CompilerOutputParserBase) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:128)
UnityEditorInternal.Runner:RunManagedProgram(String, String, String, CompilerOutputParserBase, Action`1) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:73)
Unity.Burst.Editor.BurstAotCompiler:OnPostBuildPlayerScriptDLLs(BuildReport) (at /Users/lbrugero/Library/Unity/cache/packages/packages.unity.com/com.unity.burst@0.2.4-preview.37/Editor/BurstAotCompiler.cs:236)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

I have Visual Studio Community, I have the Unity plugins into it.

Thanks for help

You can’t cross-compile a Windows player from MacOS Unity. It is not related to burst, but you need to be on a Windows machine with the VS tooling installed to do that. IL2CPP is imposing this same constraint.

Hey xoofx, thanks for your reply.

I am not sure to understand…
I’ve always compiled Windows game from my MacOS computer without problem and give to my friend on Windows and worked pretty well.

Hey, from my understanding, there’re 2 scripting backgrounds where you can find in the player settings, they are Mono and IL2CPP. Mono is an open sourced DotNet implementation, it can run everywhere so you can compile a Windows game on your Mac, no problem. However IL2CPP is a bit different, its name means Intermediate Language To C Plus Plus, where Intermediate Language is the thing behind DotNet-family, all code you write in C# will be translated into IL eventually. The project your download from the Unity repo is IL2CPP by default. IL2CPP will compile your code into platform specific C++ code and you can’t compile a windows game on your mac with it at this moment, it’s called cross-compile. I hope this makes it clear.

1 Like