in src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs [802:853]
private IEnumerable<ITaskItem> CreateItems(NuGetPackageObject package, string key, bool includePdbs = true)
{
var values = package.TargetObject[key] as JObject;
var items = new List<ITaskItem>();
if (values == null)
{
return items;
}
foreach (var file in values.Properties())
{
if (Path.GetFileName(file.Name) == "_._")
{
continue;
}
string targetPath = null;
string culture = file.Value["locale"]?.ToString();
if (culture != null)
{
targetPath = Path.Combine(culture, Path.GetFileName(file.Name));
}
var item = CreateItem(package, package.GetFullPathToFile(file.Name), targetPath);
item.SetMetadata("Private", "false");
item.SetMetadata(NuGetIsFrameworkReference, "false");
item.SetMetadata(NuGetSourceType, NuGetSourceType_Package);
items.Add(item);
// If there's a PDB alongside the implementation, we should copy that as well
if (includePdbs)
{
var pdbFileName = Path.ChangeExtension(item.ItemSpec, ".pdb");
if (_fileExists(pdbFileName))
{
var pdbItem = new TaskItem(pdbFileName);
// CopyMetadataTo also includes an OriginalItemSpec that will point to our original item, as we want
item.CopyMetadataTo(pdbItem);
items.Add(pdbItem);
}
}
}
return items;
}