forked from Unity-Technologies/UnityCsReference
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNetCoreProgram.cs
More file actions
34 lines (31 loc) · 1.51 KB
/
Copy pathNetCoreProgram.cs
File metadata and controls
34 lines (31 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Unity C# reference source
// Copyright (c) Unity Technologies. For terms of use, see
// https://unity3d.com/legal/licenses/Unity_Reference_Only_License
using System;
using System.Diagnostics;
using NiceIO;
using UnityEditor.Utils;
using UnityEngine;
namespace UnityEditor.Scripting
{
internal class NetCoreProgram : Program
{
public static readonly NPath DotNetRuntimePath = EditorApplication.applicationContentsPath + "/NetCoreRuntime";
public static readonly NPath DotNetMuxerPath = DotNetRuntimePath.Combine(Application.platform == RuntimePlatform.WindowsEditor ? "dotnet.exe" : "dotnet");
public NetCoreProgram(string executable, string arguments, Action<ProcessStartInfo> setupStartInfo)
{
_process.StartInfo = new ProcessStartInfo
{
Arguments = $"\"{executable}\" {arguments}",
UseShellExecute = false,
CreateNoWindow = true,
FileName = DotNetMuxerPath.ToString(SlashMode.Native),
WorkingDirectory = new NPath(Application.dataPath).Parent.ToString(SlashMode.Native),
};
_process.StartInfo.EnvironmentVariables["DOTNET_ROOT"] = DotNetRuntimePath.ToString(SlashMode.Native); // if unity is run from a process where it is already set, the
// initialization expression we used to have would fail
_process.StartInfo.EnvironmentVariables["DOTNET_MULTILEVEL_LOOKUP"] = "0";
setupStartInfo?.Invoke(_process.StartInfo);
}
}
}