in ILRepack/Steps/XamlResourcePathPatcherStep.cs [119:147]
internal static string PatchPath(
string path,
AssemblyDefinition primaryAssembly,
AssemblyDefinition sourceAssembly,
IList<AssemblyDefinition> otherAssemblies)
{
if (string.IsNullOrEmpty(path) || !(path.StartsWith("/") || path.StartsWith("pack://")))
return path;
string patchedPath = path;
if (primaryAssembly == sourceAssembly)
{
if (otherAssemblies.Any(assembly => TryPatchPath(path, primaryAssembly, assembly, out patchedPath)))
return patchedPath;
return path;
}
if (TryPatchPath(path, primaryAssembly, sourceAssembly, out patchedPath))
return patchedPath;
if (!path.EndsWith(".xaml"))
return path;
// we've got no non-primary assembly knowledge so far,
// that means it's a relative path in the source assembly -> just add the assembly's name as subdirectory
// /themes/file.xaml -> /library/themes/file.xaml
return "/" + sourceAssembly.Name.Name + path;
}