diff --git a/src/AXSharp.compiler/src/AXSharp.Compiler/AXSharpProject.cs b/src/AXSharp.compiler/src/AXSharp.Compiler/AXSharpProject.cs index 3a8de01d..b93ab943 100644 --- a/src/AXSharp.compiler/src/AXSharp.Compiler/AXSharpProject.cs +++ b/src/AXSharp.compiler/src/AXSharp.Compiler/AXSharpProject.cs @@ -89,8 +89,11 @@ public void Generate() var projectSources = AxProject.Sources.Select(p => (parseTree: STParser.ParseTextAsync(p).Result, source: p)); + TargetProject.ProvisionProjectStructure(); + var refParseTrees = GetReferences(); + var toCompile = refParseTrees.Concat(projectSources.Select(p => p.parseTree)); var compilationResult = Compilation.Create(toCompile, new List(), Compilation.Settings.Default).Result; @@ -135,7 +138,7 @@ public void Generate() } } - TargetProject.ProvisionProjectStructure(); + //TargetProject.ProvisionProjectStructure(); GenerateMetadata(compilationResult.Compilation); TargetProject.GenerateResources(); TargetProject.GenerateCompanionData(); @@ -193,17 +196,17 @@ private static string EnsureFolder(string folder) private IEnumerable GetReferences() { + TargetProject.InstallAXSharpDependencies(AxProject.AXSharpReferences); + var referencedDependencies = TargetProject.LoadReferences(); + + CompileProjectReferences(referencedDependencies); var dependencyMetadata = referencedDependencies .Where(p => p.IsIxDependency) .Select(p => p.MetadataPath) .Select(p => JsonConvert.DeserializeObject>(File.ReadAllText(p))); - - CompileProjectReferences(referencedDependencies); - - var refParseTrees = dependencyMetadata.SelectMany(p => p) .Select(s => STParser.ParseTextAsync(new StringText(s)).Result); @@ -213,8 +216,7 @@ private IEnumerable GetReferences() private static HashSet compiled = new(); private void CompileProjectReferences(IEnumerable referencedDependencies) - { - TargetProject.InstallAXSharpDependencies(AxProject.AXSharpReferences); + { foreach (var ixProjectReference in AxProject.AXSharpReferences.OfType()) { diff --git a/src/AXSharp.compiler/src/AXSharp.Cs.Compiler/CsProject.cs b/src/AXSharp.compiler/src/AXSharp.Cs.Compiler/CsProject.cs index bdb04de1..98a3669a 100644 --- a/src/AXSharp.compiler/src/AXSharp.Cs.Compiler/CsProject.cs +++ b/src/AXSharp.compiler/src/AXSharp.Cs.Compiler/CsProject.cs @@ -315,6 +315,12 @@ public void InstallAXSharpDependencies(IEnumerable dependencies) if (compilerOptionsProjectFile != null) { var dependent = Path.Combine(this.AxSharpProject.OutputFolder, compilerOptionsProjectFile); + + if (!File.Exists(dependent)) + { + throw new Exception("Missing dependency file."); + } + foreach (var dependency in dependencies) {