in src/Tasks/Microsoft.NET.Build.Tasks/AssetsFileResolver.cs [34:91]
public IEnumerable<ResolvedFile> Resolve(ProjectContext projectContext)
{
List<ResolvedFile> results = new List<ResolvedFile>();
foreach (LockFileTargetLibrary targetLibrary in projectContext.GetRuntimeLibraries(_excludedPackageIds))
{
if (!targetLibrary.IsPackage())
{
continue;
}
var targetLibraryPackage = new PackageIdentity(targetLibrary.Name, targetLibrary.Version);
string pkgRoot;
string libraryPath = _packageResolver.GetPackageDirectory(targetLibrary.Name, targetLibrary.Version, out pkgRoot);
results.AddRange(GetResolvedFiles(targetLibrary.RuntimeAssemblies, targetLibraryPackage, libraryPath, pkgRoot, AssetType.Runtime));
results.AddRange(GetResolvedFiles(targetLibrary.NativeLibraries, targetLibraryPackage, libraryPath, pkgRoot, AssetType.Native));
foreach (LockFileRuntimeTarget runtimeTarget in targetLibrary.RuntimeTargets.FilterPlaceholderFiles())
{
if (string.Equals(runtimeTarget.AssetType, "native", StringComparison.OrdinalIgnoreCase) ||
string.Equals(runtimeTarget.AssetType, "runtime", StringComparison.OrdinalIgnoreCase))
{
string sourcePath = Path.Combine(libraryPath, runtimeTarget.Path);
AssetType _assetType = AssetType.None;
Enum.TryParse<AssetType>(runtimeTarget.AssetType, true, out _assetType);
results.Add(
new ResolvedFile(
sourcePath: sourcePath,
destinationSubDirectory: GetDestinationSubDirectory(sourcePath,
pkgRoot,
GetRuntimeTargetDestinationSubDirectory(runtimeTarget)),
package: targetLibraryPackage,
assetType: _assetType));
}
}
foreach (LockFileItem resourceAssembly in targetLibrary.ResourceAssemblies.FilterPlaceholderFiles())
{
string locale;
string sourcePath = Path.Combine(libraryPath, resourceAssembly.Path);
if (!resourceAssembly.Properties.TryGetValue("locale", out locale))
{
locale = null;
}
results.Add(
new ResolvedFile(
sourcePath: sourcePath,
destinationSubDirectory: GetDestinationSubDirectory(sourcePath, pkgRoot, locale),
package: targetLibraryPackage,
assetType: AssetType.Resources));
}
}
return results;
}