in src/RefasmerExe/Program.cs [273:327]
private static void MakeRefasm((string Path, string RelativeForOutput) input)
{
IImportFilter? filter = null;
if (_public)
filter = new AllowPublic(_omitNonApiMembers ?? throw new Exception("--omit-non-api-members should be specified for the passed filter type."));
else if (_internals)
filter = new AllowPublicAndInternals(_omitNonApiMembers ?? throw new Exception("--omit-non-api-members should be specified for the passed filter type."));
else if (_all)
filter = new AllowAll();
byte[] result;
using (var peReader = ReadAssembly(input.Path, out var metaReader))
{
result = MetadataImporter.MakeRefasm(
metaReader,
peReader,
_logger,
filter,
_omitNonApiMembers,
_makeMock,
_omitReferenceAssemblyAttr);
}
string output;
if (!string.IsNullOrEmpty(_outputFile))
{
output = _outputFile;
}
else if (!string.IsNullOrEmpty(_outputDir))
{
output = Path.Combine(_outputDir, input.RelativeForOutput);
}
else if (_overwrite)
{
output = input.Path;
}
else
{
output = $"{input.Path}.{(_makeMock ? "mock" : "refasm")}.dll";
}
_logger.Debug?.Invoke($"Writing result to {output}");
if (File.Exists(output))
File.Delete(output);
var outdir = Path.GetDirectoryName(output);
if (!string.IsNullOrEmpty(outdir))
Directory.CreateDirectory(outdir);
File.WriteAllBytes(output, result);
}