void ExecuteInOwnAssemblyLoadContext() { var loadContext = GetLoadContext(); var assemblyFile = Path.Combine(AssemblyLocation.CurrentDirectory, "FodyIsolated.dll"); using (innerWeaver = (IInnerWeaver)loadContext.CreateInstanceFromAndUnwrap(assemblyFile, "InnerWeaver")) { innerWeaver.AssemblyFilePath = AssemblyFilePath; innerWeaver.References = References; innerWeaver.KeyFilePath = KeyFilePath; innerWeaver.ReferenceCopyLocalPaths = ReferenceCopyLocalPaths; innerWeaver.SignAssembly = SignAssembly; innerWeaver.Logger = Logger; innerWeaver.SolutionDirectoryPath = SolutionDirectory; innerWeaver.Weavers = Weavers; innerWeaver.IntermediateDirectoryPath = IntermediateDirectory; innerWeaver.DefineConstants = DefineConstants; innerWeaver.ProjectDirectoryPath = ProjectDirectory; innerWeaver.ProjectFilePath = ProjectFilePath; innerWeaver.DocumentationFilePath = DocumentationFilePath; innerWeaver.DebugSymbols = DebugSymbols; innerWeaver.Execute(); ReferenceCopyLocalPaths = innerWeaver.ReferenceCopyLocalPaths; } innerWeaver = null; }
void ExecuteInOwnAssemblyLoadContext() { if (solutionAssemblyLoadContexts.TryGetValue(SolutionDirectory, out var loadContext)) { if (WeaversHistory.HasChanged(Weavers.Select(x => x.AssemblyPath))) { Logger.LogDebug("A Weaver HasChanged so loading a new AssemblyLoadContext"); loadContext.Unload(); loadContext = solutionAssemblyLoadContexts[SolutionDirectory] = CreateAssemblyLoadContext(); } } else { loadContext = solutionAssemblyLoadContexts[SolutionDirectory] = CreateAssemblyLoadContext(); } var assemblyFile = Path.Combine(AssemblyLocation.CurrentDirectory, "FodyIsolated.dll"); using (innerWeaver = (IInnerWeaver)loadContext.CreateInstanceFromAndUnwrap(assemblyFile, "InnerWeaver")) { innerWeaver.AssemblyFilePath = AssemblyFilePath; innerWeaver.References = References; innerWeaver.KeyFilePath = KeyFilePath; innerWeaver.ReferenceCopyLocalPaths = ReferenceCopyLocalPaths; innerWeaver.SignAssembly = SignAssembly; innerWeaver.Logger = Logger; innerWeaver.SolutionDirectoryPath = SolutionDirectory; innerWeaver.Weavers = Weavers; innerWeaver.IntermediateDirectoryPath = IntermediateDirectory; innerWeaver.DefineConstants = DefineConstants; innerWeaver.ProjectDirectoryPath = ProjectDirectory; innerWeaver.DocumentationFilePath = DocumentationFilePath; innerWeaver.DebugSymbols = DebugSymbols; innerWeaver.Execute(); ReferenceCopyLocalPaths = innerWeaver.ReferenceCopyLocalPaths; } innerWeaver = null; }
void ExecuteInOwnAppDomain() { AppDomain appDomain; if (solutionDomains.TryGetValue(SolutionDirectory, out appDomain)) { if (WeaversHistory.HasChanged(Weavers.Select(x => x.AssemblyPath))) { Logger.LogDebug("A Weaver HasChanged so loading a new AppDomain"); AppDomain.Unload(appDomain); appDomain = solutionDomains[SolutionDirectory] = CreateDomain(); } } else { appDomain = solutionDomains[SolutionDirectory] = CreateDomain(); } var assemblyFile = Path.Combine(AssemblyLocation.CurrentDirectory, "FodyIsolated.dll"); using (innerWeaver = (IInnerWeaver)appDomain.CreateInstanceFromAndUnwrap(assemblyFile, "InnerWeaver")) { innerWeaver.AssemblyFilePath = AssemblyFilePath; innerWeaver.References = References; innerWeaver.KeyFilePath = KeyFilePath; innerWeaver.ReferenceCopyLocalPaths = ReferenceCopyLocalPaths; innerWeaver.SignAssembly = SignAssembly; innerWeaver.Logger = Logger; innerWeaver.SolutionDirectoryPath = SolutionDirectory; innerWeaver.Weavers = Weavers; innerWeaver.IntermediateDirectoryPath = IntermediateDirectory; innerWeaver.DefineConstants = DefineConstants; innerWeaver.ProjectDirectoryPath = ProjectDirectory; innerWeaver.Execute(); } innerWeaver = null; }
void ExecuteInOwnAppDomain() { AppDomain appDomain; if (solutionDomains.TryGetValue(SolutionDirectory, out appDomain)) { if (WeaversHistory.HasChanged(Weavers.Select(x => x.AssemblyPath))) { Logger.LogDebug("A Weaver HasChanged so loading a new AppDomain"); AppDomain.Unload(appDomain); appDomain = solutionDomains[SolutionDirectory] = CreateDomain(); } } else { appDomain = solutionDomains[SolutionDirectory] = CreateDomain(); } var assemblyFile = Path.Combine(AssemblyLocation.CurrentDirectory, "FodyIsolated.dll"); using (innerWeaver = (IInnerWeaver)appDomain.CreateInstanceFromAndUnwrap(assemblyFile, "InnerWeaver")) { innerWeaver.AssemblyFilePath = AssemblyFilePath; innerWeaver.References = References; innerWeaver.KeyFilePath = KeyFilePath; innerWeaver.ReferenceCopyLocalPaths = ReferenceCopyLocalPaths; innerWeaver.SignAssembly = SignAssembly; innerWeaver.Logger = Logger; innerWeaver.SolutionDirectoryPath = SolutionDirectory; innerWeaver.Weavers = Weavers; innerWeaver.IntermediateDirectoryPath = IntermediateDirectory; innerWeaver.DefineConstants = DefineConstants; innerWeaver.ProjectDirectoryPath = ProjectDirectory; innerWeaver.Execute(); } innerWeaver = null; }