From 6ebdf99cf1ee8590b2fedb38c3e5a8c9a6ba9da9 Mon Sep 17 00:00:00 2001 From: voiceofwisdom Date: Fri, 24 Jul 2015 14:49:40 -0500 Subject: [PATCH 1/2] Handling for assemblies not existing. --- src/app/FakeLib/FSIHelper.fs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/app/FakeLib/FSIHelper.fs b/src/app/FakeLib/FSIHelper.fs index 034bd6daa71..786318a49c2 100644 --- a/src/app/FakeLib/FSIHelper.fs +++ b/src/app/FakeLib/FSIHelper.fs @@ -257,12 +257,17 @@ let internal runFAKEScriptWithFsiArgsAndRedirectMessages printDetails (FsiArgs(f let assemVersionValidCount = cacheConfig.Value.Assemblies |> Seq.map(fun assemInfo -> - let assem = - if assemInfo.Location <> "" then - Reflection.Assembly.LoadFrom(assemInfo.Location) - else - Reflection.Assembly.Load(assemInfo.FullName) - assem.GetName().Version.ToString() = assemInfo.Version) + try + let assem = + if assemInfo.Location <> "" then + Reflection.Assembly.LoadFrom(assemInfo.Location) + else + Reflection.Assembly.Load(assemInfo.FullName) + assem.GetName().Version.ToString() = assemInfo.Version + with + | ex -> + if printDetails then tracef "Unable to find assembly %A" assemInfo + false) |> Seq.filter(fun x -> x = true) |> Seq.length From ee34f741f74980df8fb7598b23717f6abee7e9f8 Mon Sep 17 00:00:00 2001 From: voiceofwisdom Date: Fri, 24 Jul 2015 14:50:24 -0500 Subject: [PATCH 2/2] Handling for dynamic assemblies. Does not save cache data when dynamic assemblies are created. --- src/app/FakeLib/FSIHelper.fs | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/app/FakeLib/FSIHelper.fs b/src/app/FakeLib/FSIHelper.fs index 786318a49c2..82ba680ad6d 100644 --- a/src/app/FakeLib/FSIHelper.fs +++ b/src/app/FakeLib/FSIHelper.fs @@ -342,14 +342,21 @@ let internal runFAKEScriptWithFsiArgsAndRedirectMessages printDetails (FsiArgs(f if File.Exists("FSI-ASSEMBLY.pdb") then File.Delete("FSI-ASSEMBLY.pdb") - let refedAssemblies = - System.AppDomain.CurrentDomain.GetAssemblies() - |> Seq.filter(fun assem -> not assem.IsDynamic) + let dynamicAssemblies = + System.AppDomain.CurrentDomain.GetAssemblies() + |> Seq.filter(fun assem -> assem.IsDynamic) + |> Seq.filter(fun assem -> assem.GetName().Name <> "FSI-ASSEMBLY") + if dynamicAssemblies |> Seq.length > 0 then + if printDetails then + trace "Dynamic assemblies were generated during evaluation of script.\nCan not save cache." + else + let assemblies = + System.AppDomain.CurrentDomain.GetAssemblies() + |> Seq.filter(fun assem -> not assem.IsDynamic) - let cacheConfig : XDocument = Cache.create refedAssemblies - cacheConfig.Save(cacheConfigPath.Value) - - if printDetails then trace (System.Environment.NewLine + "Saved cache") + let cacheConfig : XDocument = Cache.create assemblies + cacheConfig.Save(cacheConfigPath.Value) + if printDetails then trace (System.Environment.NewLine + "Saved cache") with | ex -> handleException ex