forked from dotnet/sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReferenceInfo.cs
50 lines (42 loc) · 1.86 KB
/
ReferenceInfo.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Microsoft.Build.Framework;
namespace Microsoft.NET.Build.Tasks
{
public class ReferenceInfo
{
public string Name { get; }
public string Version { get; }
public string FullPath { get; }
private ReferenceInfo(string name, string version, string fullPath)
{
Name = name;
Version = version;
FullPath = fullPath;
}
public static IEnumerable<ReferenceInfo> CreateFrameworkReferenceInfos(IEnumerable<ITaskItem> referencePaths)
{
IEnumerable<ITaskItem> frameworkReferencePaths = referencePaths
.Where(r => r.GetBooleanMetadata("FrameworkFile") == true ||
r.GetMetadata("ResolvedFrom") == "ImplicitlyExpandDesignTimeFacades");
List<ReferenceInfo> frameworkReferences = new List<ReferenceInfo>();
foreach (ITaskItem frameworkReferencePath in frameworkReferencePaths)
{
string fullPath = frameworkReferencePath.ItemSpec;
string name = Path.GetFileNameWithoutExtension(fullPath);
string version = frameworkReferencePath.GetMetadata("Version");
if (string.IsNullOrEmpty(version))
{
// ImplicitlyExpandDesignTimeFacades adds straight to reference path
// without setting version metadata. Use 0.0.0.0 as placeholder.
version = "0.0.0.0";
}
frameworkReferences.Add(new ReferenceInfo(name, version, fullPath));
}
return frameworkReferences;
}
}
}