Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions src/Xamarin.Android.Build.Tasks/Tasks/ResolveAssemblies.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ public class ResolveAssemblies : AsyncTask

public string TargetMoniker { get; set; }

public string NuGetPackageRoot { get; set; }

public string I18nAssemblies { get; set; }
public string LinkMode { get; set; }

Expand Down Expand Up @@ -76,7 +74,6 @@ bool Execute (DirectoryAssemblyResolver resolver)
LogDebugMessage (" LinkMode: {0}", LinkMode);
LogDebugTaskItems (" Assemblies:", Assemblies);
LogDebugMessage (" ProjectAssetFile: {0}", ProjectAssetFile);
LogDebugMessage (" NuGetPackageRoot: {0}", NuGetPackageRoot);
LogDebugMessage (" TargetMoniker: {0}", TargetMoniker);

foreach (var dir in ReferenceAssembliesDirectory.Split (new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
Expand Down Expand Up @@ -107,10 +104,11 @@ bool Execute (DirectoryAssemblyResolver resolver)
throw new InvalidOperationException ("Failed to load assembly " + assembly.ItemSpec);
if (MonoAndroidHelper.IsReferenceAssembly (assemblyDef)) {
// Resolve "runtime" library
var asmFullPath = Path.GetFullPath (assembly.ItemSpec);
if (lockFile != null)
assemblyDef = ResolveRuntimeAssemblyForReferenceAssembly (lockFile, resolver, assembly_path);
assemblyDef = ResolveRuntimeAssemblyForReferenceAssembly (lockFile, resolver, asmFullPath);
if (lockFile == null || assemblyDef == null) {
LogWarning ($"Ignoring {assembly_path} as it is a Reference Assembly");
LogWarning ($"Ignoring {asmFullPath} as it is a Reference Assembly");
continue;
}
}
Expand Down Expand Up @@ -156,7 +154,7 @@ bool Execute (DirectoryAssemblyResolver resolver)

AssemblyDefinition ResolveRuntimeAssemblyForReferenceAssembly (LockFile lockFile, DirectoryAssemblyResolver resolver, string assemblyPath)
{
if (string.IsNullOrEmpty(TargetMoniker) || string.IsNullOrEmpty (NuGetPackageRoot) || !Directory.Exists (NuGetPackageRoot))
if (string.IsNullOrEmpty(TargetMoniker))
return null;

var framework = NuGetFramework.Parse (TargetMoniker);
Expand All @@ -171,7 +169,7 @@ AssemblyDefinition ResolveRuntimeAssemblyForReferenceAssembly (LockFile lockFile
}
foreach (var folder in lockFile.PackageFolders) {
var path = assemblyPath.Replace (folder.Path, string.Empty);
var libraryPath = lockFile.Libraries.FirstOrDefault (x => path.StartsWith (x.Path, StringComparison.OrdinalIgnoreCase));
var libraryPath = lockFile.Libraries.FirstOrDefault (x => path.StartsWith (x.Path.Replace('/', Path.DirectorySeparatorChar), StringComparison.OrdinalIgnoreCase));
if (libraryPath == null)
continue;
var library = target.Libraries.FirstOrDefault (x => String.Compare (x.Name, libraryPath.Name, StringComparison.OrdinalIgnoreCase) == 0);
Expand All @@ -180,7 +178,7 @@ AssemblyDefinition ResolveRuntimeAssemblyForReferenceAssembly (LockFile lockFile
var runtime = library.RuntimeAssemblies.FirstOrDefault ();
if (runtime == null)
continue;
path = Path.Combine (NuGetPackageRoot, libraryPath.Path, runtime.Path);
path = Path.Combine (folder.Path, libraryPath.Path, runtime.Path).Replace('/', Path.DirectorySeparatorChar);
if (!File.Exists (path))
continue;
LogDebugMessage ($"Attempting to load {path}");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1608,7 +1608,6 @@ because xbuild doesn't support framework reference assemblies.
I18nAssemblies="$(MandroidI18n)"
LinkMode="$(AndroidLinkMode)"
ProjectAssetFile="$(ProjectLockFile)"
NuGetPackageRoot="$(NuGetPackageRoot)"
TargetMoniker="$(NuGetTargetMoniker)"
ReferenceAssembliesDirectory="$(TargetFrameworkDirectory)">
<Output TaskParameter="ResolvedAssemblies" ItemName="ResolvedAssemblies" />
Expand Down