示例#1
0
        protected void InjectFarmhandCoreClasses(string output, params string[] inputs)
        {
            RepackOptions options = new RepackOptions();
            ILogger       logger  = new RepackLogger();

            try
            {
                options.InputAssemblies   = inputs;
                options.OutputFile        = output;
                options.DebugInfo         = true;
                options.SearchDirectories = new[] { Directory.GetCurrentDirectory() };

                var repack = new ILRepack(options, logger);
                repack.Repack();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"FATAL ERROR: ILRepack: {ex.Message}");
                throw new Exception("ILRepack Error", ex);
                // ignored
            }
            finally
            {
                if (options.PauseBeforeExit)
                {
                    Console.WriteLine("Press Any Key To Continue");
                    Console.ReadKey(true);
                }
            }
        }
示例#2
0
        public void GivenAnEmptyOutputFile__OpenFile_LogLine__OpenReturnsFalse_LogDoesNotThrowError()
        {
            RepackLogger logger = new RepackLogger(new RepackOptions());

            Assert.IsFalse(logger.Open(""));
            logger.Log("Hello");
        }
示例#3
0
        public void GivenAnEmptyOutputFile__OpenFile_CloseFile__OpenReturnsFalse_ClosedDoesNotThrowError()
        {
            RepackLogger logger = new RepackLogger(new RepackOptions());

            Assert.IsFalse(logger.Open(""));
            logger.Close();
        }
示例#4
0
        public void GivenOutputFile__OpenFile_CloseFile_LogError__StreamIsOpened_StreamIsClosed_NoErrorIsThrown()
        {
            RepackLogger logger = new RepackLogger(new RepackOptions());

            Assert.IsTrue(logger.Open("file.out"));
            logger.Close();
            const string message = "Only written to the console. No error is thrown.";

            logger.Error(message);
            logger.Warn(message);
            logger.Verbose(message);
            logger.Info(message);
        }
示例#5
0
        public void GivenOutputFile__OpenFile_CloseFile_LogError__StreamIsOpened_StreamIsClosed_NoErrorIsThrown()
        {
            ILogger logger = new RepackLogger();

            Assert.IsTrue(logger.Open("file.out"));
            logger.Close();
            const string message = "Only written to the console. No erorr is thrown.";

            logger.ERROR(message);
            logger.WARN(message);
            logger.VERBOSE(message);
            logger.INFO(message);
        }
示例#6
0
        /// <summary>
        ///     Injects Farmhand assemblies into the game's executable
        /// </summary>
        /// <param name="output">
        ///     The output path
        /// </param>
        /// <param name="inputs">
        ///     The assemblies to merge
        /// </param>
        /// <exception cref="Exception">
        ///     Throws an exception if ILRepack fails.
        /// </exception>
        protected void InjectFarmhandCoreClasses(string output, params string[] inputs)
        {
            var     options = new RepackOptions();
            ILogger logger  = new RepackLogger();

            try
            {
                options.InputAssemblies = string.IsNullOrEmpty(this.Options.AssemblyDirectory)
                                              ? inputs
                                              : inputs.Select(
                    n =>
                    Path.IsPathRooted(n)
                                                          ? n
                                                          : Path.Combine(this.Options.AssemblyDirectory, n)).ToArray();

                options.OutputFile        = output;
                options.DebugInfo         = true;
                options.SearchDirectories = string.IsNullOrEmpty(this.Options.AssemblyDirectory)
                                                ? new[] { Directory.GetCurrentDirectory() }
                                                : new[] { this.Options.AssemblyDirectory };

                var repack = new ILRepack(options, logger);
                repack.Repack();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"FATAL ERROR: ILRepack: {ex.Message}");
                throw new Exception("ILRepack Error", ex);
            }
            finally
            {
                if (options.PauseBeforeExit)
                {
                    Console.WriteLine("Press Any Key To Continue");
                    Console.ReadKey(true);
                }
            }
        }