private ParseFrameworkNameFromFilePath ( string filePath, string &effectivePath ) : FrameworkName | ||
filePath | string | |
effectivePath | string | |
return | FrameworkName |
public static FrameworkName ParseFrameworkNameFromFilePath(string filePath, out string effectivePath)
{
var knownFolders = new string[]
{
Constants.ContentDirectory,
Constants.LibDirectory,
Constants.ToolsDirectory
};
for (int i = 0; i < knownFolders.Length; i++)
{
string folderPrefix = knownFolders[i] + System.IO.Path.DirectorySeparatorChar;
if (filePath.Length > folderPrefix.Length &&
filePath.StartsWith(folderPrefix, StringComparison.OrdinalIgnoreCase))
{
string frameworkPart = filePath.Substring(folderPrefix.Length);
try
{
return VersionUtility.ParseFrameworkFolderName(
frameworkPart,
strictParsing: knownFolders[i] != Constants.ContentDirectory,
effectivePath: out effectivePath);
}
catch (ArgumentException)
{
// if the parsing fails, we treat it as if this file
// doesn't have target framework.
effectivePath = frameworkPart;
return null;
}
}
}
effectivePath = filePath;
return null;
}
public override IEnumerable <FrameworkName> GetSupportedFrameworks() { IEnumerable <FrameworkName> enumerable; IEnumerable <IPackageFile> enumerable2; if (this._enableCaching && MemoryCache.Instance.TryGetValue <IEnumerable <IPackageFile> >(this.GetFilesCacheKey(), out enumerable2)) { enumerable = from c in enumerable2 select c.TargetFramework; } else { using (Stream stream = this._streamFactory()) { enumerable = Enumerable.Select <PackagePart, FrameworkName>(from part in Package.Open(stream).GetParts() where IsPackageFile(part) select part, delegate(PackagePart part) { string effectivePath; return(VersionUtility.ParseFrameworkNameFromFilePath(UriUtility.GetPath(part.Uri), out effectivePath)); }); } } return((from f in base.GetSupportedFrameworks().Concat <FrameworkName>(enumerable) where f != null select f).Distinct <FrameworkName>()); }