Skip to content

Commit

Permalink
simplify IsolatedAssemblyLoadContext
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonCropp committed Oct 31, 2019
1 parent b76d712 commit 7f4f425
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 21 deletions.
7 changes: 2 additions & 5 deletions Fody/Processor.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Fody;

Expand Down Expand Up @@ -127,9 +126,7 @@ void ExecuteInOwnAssemblyLoadContext()
{
var loadContext = GetLoadContext();

var assemblyFile = Path.Combine(AssemblyLocation.CurrentDirectory, "FodyIsolated.dll");
Logger.LogDebug($"LoadContext AssemblyFile: {assemblyFile}");
using (innerWeaver = (IInnerWeaver)loadContext.CreateInstanceFromAndUnwrap(assemblyFile, "InnerWeaver"))
using (innerWeaver = (IInnerWeaver)loadContext.CreateInstanceFromAndUnwrap())
{
innerWeaver.AssemblyFilePath = AssemblyFilePath;
innerWeaver.References = References;
Expand Down Expand Up @@ -172,7 +169,7 @@ IsolatedAssemblyLoadContext GetLoadContext()
IsolatedAssemblyLoadContext CreateAssemblyLoadContext()
{
Logger.LogDebug("Creating a new AssemblyLoadContext");
return new IsolatedAssemblyLoadContext($"Fody Domain for '{SolutionDirectory}'", AssemblyLocation.CurrentDirectory);
return new IsolatedAssemblyLoadContext();
}

public void Cancel()
Expand Down
29 changes: 13 additions & 16 deletions FodyCommon/IsolatedAssemblyLoadContext.cs
@@ -1,21 +1,24 @@
#if NET472
using System.IO;
#if NET472
using System;

public class IsolatedAssemblyLoadContext
{
AppDomain appDomain;

public IsolatedAssemblyLoadContext(string friendlyName, string applicationBase)
public IsolatedAssemblyLoadContext()
{
var appDomainSetup = new AppDomainSetup
{
ApplicationBase = applicationBase,
ApplicationBase = AssemblyLocation.CurrentDirectory,
};
appDomain = AppDomain.CreateDomain(friendlyName, null, appDomainSetup);
appDomain = AppDomain.CreateDomain("Fody AppDomain", null, appDomainSetup);
}

public object CreateInstanceFromAndUnwrap(string assemblyPath, string typeName)
public object CreateInstanceFromAndUnwrap()
{
return appDomain.CreateInstanceFromAndUnwrap(assemblyPath, typeName);
var assemblyFile = Path.Combine(AssemblyLocation.CurrentDirectory, "FodyIsolated.dll");
return appDomain.CreateInstanceFromAndUnwrap(assemblyFile, "InnerWeaver");
}

public void Unload()
Expand All @@ -29,22 +32,16 @@ public void Unload()

public class IsolatedAssemblyLoadContext : AssemblyLoadContext
{
// ReSharper disable UnusedParameter.Local
public IsolatedAssemblyLoadContext(string friendlyName, string applicationBase)
{
}
// ReSharper restore UnusedParameter.Local

/// <inheritdoc />
protected override Assembly Load(AssemblyName assemblyName)
{
return null;
}

public object CreateInstanceFromAndUnwrap(string assemblyPath, string typeName)
public object CreateInstanceFromAndUnwrap()
{
var assembly = LoadFromAssemblyPath(assemblyPath);
return assembly.CreateInstance(typeName);
var assemblyFile = Path.Combine(AssemblyLocation.CurrentDirectory, "FodyIsolated.dll");
var assembly = LoadFromAssemblyPath(assemblyFile);
return assembly.CreateInstance("InnerWeaver");
}

public void Unload()
Expand Down

0 comments on commit 7f4f425

Please sign in to comment.