예제 #1
0
        private void CompileFile(ContentConverter converter, string originalFile)
        {
            string xnbFile = Path.ChangeExtension(originalFile, "xnb");

#if !DEBUG
            if (File.Exists(xnbFile) && File.GetLastWriteTimeUtc(xnbFile) > File.GetLastWriteTimeUtc(originalFile))
            {
                return;
            }
#endif

            Console.WriteLine($"\nConverting: { originalFile }");

            try
            {
                string directory = Path.GetDirectoryName(originalFile);

                object description = converter.Importer.Import(originalFile, contentImporterContext);
                object content     = converter.Processor.Process(description, contentProcessorContext);

                using (FileStream fs = new FileStream(xnbFile, FileMode.Create))
                    compileMethod.Invoke(
                        contentCompiler,
                        new object[]
                    {
                        fs,
                        content,
                        contentProcessorContext.TargetPlatform,
                        contentProcessorContext.TargetProfile,
                        converter.Compress,
                        directory,
                        directory
                    }
                        );
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;

                if (e is InvalidContentException ex)
                {
                    converter.LogError(originalFile, ex);
                }
                else
                {
                    Console.WriteLine($"{ originalFile }: error: { e.Message }");
                }

                Console.ResetColor();
            }
        }