Ignore framework assemblies when compiling for package based frameworks.
Fixes #1054
This commit is contained in:
parent
9e8f101ae3
commit
ec73b1de23
1 changed files with 21 additions and 14 deletions
|
@ -38,7 +38,7 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
||||||
!containsAssembly;
|
!containsAssembly;
|
||||||
|
|
||||||
var dependencies = new List<LibraryRange>(targetLibrary.Dependencies.Count + targetLibrary.FrameworkAssemblies.Count);
|
var dependencies = new List<LibraryRange>(targetLibrary.Dependencies.Count + targetLibrary.FrameworkAssemblies.Count);
|
||||||
PopulateDependencies(dependencies, targetLibrary);
|
PopulateDependencies(dependencies, targetLibrary, targetFramework);
|
||||||
|
|
||||||
var path = _packagePathResolver.GetInstallPath(package.Name, package.Version);
|
var path = _packagePathResolver.GetInstallPath(package.Name, package.Version);
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
||||||
private void PopulateLegacyPortableDependencies(NuGetFramework targetFramework, List<LibraryRange> dependencies, string packagePath, LockFileTargetLibrary targetLibrary)
|
private void PopulateLegacyPortableDependencies(NuGetFramework targetFramework, List<LibraryRange> dependencies, string packagePath, LockFileTargetLibrary targetLibrary)
|
||||||
{
|
{
|
||||||
var seen = new HashSet<string>();
|
var seen = new HashSet<string>();
|
||||||
|
|
||||||
foreach (var assembly in targetLibrary.CompileTimeAssemblies)
|
foreach (var assembly in targetLibrary.CompileTimeAssemblies)
|
||||||
{
|
{
|
||||||
// (ref/lib)/{tfm}/{assembly}
|
// (ref/lib)/{tfm}/{assembly}
|
||||||
|
@ -75,34 +75,34 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
||||||
}
|
}
|
||||||
|
|
||||||
var assemblyTargetFramework = NuGetFramework.Parse(pathParts[1]);
|
var assemblyTargetFramework = NuGetFramework.Parse(pathParts[1]);
|
||||||
|
|
||||||
if (!assemblyTargetFramework.IsPCL)
|
if (!assemblyTargetFramework.IsPCL)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var assemblyPath = Path.Combine(packagePath, assembly.Path);
|
var assemblyPath = Path.Combine(packagePath, assembly.Path);
|
||||||
|
|
||||||
foreach (var dependency in GetDependencies(assemblyPath))
|
foreach (var dependency in GetDependencies(assemblyPath))
|
||||||
{
|
{
|
||||||
if (seen.Add(dependency))
|
if (seen.Add(dependency))
|
||||||
{
|
{
|
||||||
string path;
|
string path;
|
||||||
Version version;
|
Version version;
|
||||||
|
|
||||||
// If there exists a reference assembly on the requested framework with the same name then turn this into a
|
// If there exists a reference assembly on the requested framework with the same name then turn this into a
|
||||||
// framework assembly dependency
|
// framework assembly dependency
|
||||||
if (_frameworkReferenceResolver.TryGetAssembly(dependency, targetFramework, out path, out version))
|
if (_frameworkReferenceResolver.TryGetAssembly(dependency, targetFramework, out path, out version))
|
||||||
{
|
{
|
||||||
dependencies.Add(new LibraryRange(dependency,
|
dependencies.Add(new LibraryRange(dependency,
|
||||||
LibraryType.ReferenceAssembly,
|
LibraryType.ReferenceAssembly,
|
||||||
LibraryDependencyType.Build));
|
LibraryDependencyType.Build));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IEnumerable<string> GetDependencies(string path)
|
private static IEnumerable<string> GetDependencies(string path)
|
||||||
{
|
{
|
||||||
using (var peReader = new PEReader(File.OpenRead(path)))
|
using (var peReader = new PEReader(File.OpenRead(path)))
|
||||||
|
@ -118,7 +118,10 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PopulateDependencies(List<LibraryRange> dependencies, LockFileTargetLibrary targetLibrary)
|
private void PopulateDependencies(
|
||||||
|
List<LibraryRange> dependencies,
|
||||||
|
LockFileTargetLibrary targetLibrary,
|
||||||
|
NuGetFramework targetFramework)
|
||||||
{
|
{
|
||||||
foreach (var dependency in targetLibrary.Dependencies)
|
foreach (var dependency in targetLibrary.Dependencies)
|
||||||
{
|
{
|
||||||
|
@ -129,12 +132,16 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
||||||
LibraryDependencyType.Default));
|
LibraryDependencyType.Default));
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var frameworkAssembly in targetLibrary.FrameworkAssemblies)
|
if (!targetFramework.IsPackageBased)
|
||||||
{
|
{
|
||||||
dependencies.Add(new LibraryRange(
|
// Only add framework assemblies for non-package based frameworks.
|
||||||
frameworkAssembly,
|
foreach (var frameworkAssembly in targetLibrary.FrameworkAssemblies)
|
||||||
LibraryType.ReferenceAssembly,
|
{
|
||||||
LibraryDependencyType.Default));
|
dependencies.Add(new LibraryRange(
|
||||||
|
frameworkAssembly,
|
||||||
|
LibraryType.ReferenceAssembly,
|
||||||
|
LibraryDependencyType.Default));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue