From b79601f318320b7b2400e2347e43ebe4e1a326cf Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Wed, 4 Dec 2019 16:08:08 +0100 Subject: [PATCH] added a try-catch around assembly loading --- Contentless/Contentless.nuspec | 2 +- Contentless/Program.cs | 44 ++++++++++++++++------------------ Test/Content/Content.mgcb | 5 ---- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/Contentless/Contentless.nuspec b/Contentless/Contentless.nuspec index 0e34647..f6b0cfc 100644 --- a/Contentless/Contentless.nuspec +++ b/Contentless/Contentless.nuspec @@ -2,7 +2,7 @@ Contentless - 2.0.4 + 2.0.5 Ellpeck A tool for MonoGame that automatically handles adding assets to the Content Pipeline project monogame mono xna content pipeline mgcb builder tool library diff --git a/Contentless/Program.cs b/Contentless/Program.cs index 1e3dece..1619a99 100644 --- a/Contentless/Program.cs +++ b/Contentless/Program.cs @@ -59,10 +59,9 @@ namespace Contentless { } // load content importers - var importers = GetContentImporters().ToArray(); - Console.WriteLine($"Found possible importer types {string.Join(", ", importers.AsEnumerable())}"); - var processors = GetContentProcessors().ToArray(); - Console.WriteLine($"Found possible processor types {string.Join(", ", processors.AsEnumerable())}"); + var (importers, processors) = GetContentData(); + Console.WriteLine($"Found possible importer types {string.Join(", ", importers)}"); + Console.WriteLine($"Found possible processor types {string.Join(", ", processors)}"); var changed = false; foreach (var file in contentFile.Directory.EnumerateFiles("*", SearchOption.AllDirectories)) { @@ -98,14 +97,14 @@ namespace Contentless { continue; } - importer = Array.Find(importers, i => i.Type.Name == over.Importer); + importer = importers.Find(i => i.Type.Name == over.Importer); if (importer == null) { Console.WriteLine($"Override importer {over.Importer} not found for file {relative}"); continue; } if (over.Processor != null) { - processor = Array.Find(processors, p => p == over.Processor); + processor = processors.Find(p => p == over.Processor); if (processor == null) { Console.WriteLine($"Override processor {over.Processor} not found for file {relative}"); continue; @@ -117,7 +116,7 @@ namespace Contentless { if (importer == null) importer = GetImporterFor(relative, importers); if (importer != null && processor == null) - processor = Array.Find(processors, p => p == importer.Importer.DefaultProcessor); + processor = processors.Find(p => p == importer.Importer.DefaultProcessor); // no importer found :( if (importer == null || processor == null) { @@ -140,24 +139,24 @@ namespace Contentless { Console.Write("Done"); } - private static IEnumerable GetContentImporters() { + private static (List, List) GetContentData() { + var importers = new List(); + var processors = new List(); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { - foreach (var type in assembly.GetExportedTypes()) { - var importer = (ContentImporterAttribute) type.GetCustomAttribute(typeof(ContentImporterAttribute), true); - if (importer != null) - yield return new ImporterInfo(importer, type); - } - } - } - - private static IEnumerable GetContentProcessors() { - foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { - foreach (var type in assembly.GetExportedTypes()) { - var processor = type.GetCustomAttribute(typeof(ContentProcessorAttribute), true); - if (processor != null) - yield return type.Name; + try { + foreach (var type in assembly.GetExportedTypes()) { + var importer = (ContentImporterAttribute) type.GetCustomAttribute(typeof(ContentImporterAttribute), true); + if (importer != null) + importers.Add(new ImporterInfo(importer, type)); + var processor = type.GetCustomAttribute(typeof(ContentProcessorAttribute), true); + if (processor != null) + processors.Add(type.Name); + } + } catch (Exception) { + // ignored } } + return (importers, processors); } private static IEnumerable GetOverrides(Dictionary config) { @@ -241,5 +240,4 @@ namespace Contentless { } } - } \ No newline at end of file diff --git a/Test/Content/Content.mgcb b/Test/Content/Content.mgcb index 6859bf8..6a74ba6 100644 --- a/Test/Content/Content.mgcb +++ b/Test/Content/Content.mgcb @@ -51,8 +51,3 @@ /processor:TiledMapTilesetProcessor /build:Tiled/Tileset.tsx -#begin Textures/Exclude.png -/importer:TextureImporter -/processor:TextureProcessor -/build:Textures/Exclude.png -