Beispiel #1
0
 private static void RunInternal(GameProject.Project project, GameDev.BuildConfiguration buildConfig, bool debug)
 {
     CallOnSTAThread(() =>
     {
         if (m_vsInstance != null && !IsDebuggingInternal() && BuildDone && BuildSucceeded)
         {
             m_vsInstance.ExecuteCommand(debug ? "Debug.Start" : "Debug.StartWithoutDebugging");
         }
     });
 }
Beispiel #2
0
        private static void BuildSolutionInternal(Project project, GameDev.BuildConfiguration buildConfig, bool showWindow)
        {
            if (IsDebuggingInternal())
            {
                Utils.Logger.Log(Utils.MessageTypes.Error, "Failed to build, Visual Studio is currently running a process");
                return;
            }

            OpenVisualStudioInternal(project.Solution);
            BuildDone = BuildSucceeded = false;

            CallOnSTAThread(() =>
            {
                if (!m_vsInstance.Solution.IsOpen)
                {
                    m_vsInstance.Solution.Open(project.Solution);
                }

                m_vsInstance.MainWindow.Visible = showWindow;
                m_vsInstance.Events.BuildEvents.OnBuildProjConfigBegin += OnBuildSolutionBegin;
                m_vsInstance.Events.BuildEvents.OnBuildProjConfigDone  += OnBuildSolutionDone;
            });

            var configName = GetConfigurationName(buildConfig);

            try
            {
                foreach (var pdbFile in System.IO.Directory.GetFiles(System.IO.Path.Combine($"{project.Path}", $@"x64\{configName}"), "*.pdb"))
                {
                    System.IO.File.Delete(pdbFile);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

            CallOnSTAThread(() =>
            {
                m_vsInstance.Solution.SolutionBuild.SolutionConfigurations.Item(configName).Activate();
                m_vsInstance.ExecuteCommand("Build.BuildSolution");
                m_resetEvent.Wait();
                m_resetEvent.Reset();
            });
        }
Beispiel #3
0
 public static void Run(GameProject.Project project, GameDev.BuildConfiguration buildConfig, bool debug)
 {
     lock (m_lock) { RunInternal(project, buildConfig, debug); }
 }
Beispiel #4
0
 public static string GetConfigurationName(GameDev.BuildConfiguration config) => m_buildConfigurationNames[(int)config];
Beispiel #5
0
 public static void BuildSolution(Project project, GameDev.BuildConfiguration buildConfig, bool showWindow = true)
 {
     lock (m_lock) { BuildSolutionInternal(project, buildConfig, showWindow); }
 }