public void GetProjectFramework_WithCLRSupport_VariousInputs( string projectFilePath, string targetFrameworkMoniker, string targetPlatformMoniker, string targetPlatformMinVersion, string clrSupport, string expectedPrimaryShortName, string expectedSecondaryShortName) { var nugetFramework = MSBuildProjectFrameworkUtility.GetProjectFramework( projectFilePath: projectFilePath, targetFrameworkMoniker, targetPlatformMoniker, targetPlatformMinVersion, clrSupport); Assert.Equal(expectedPrimaryShortName, nugetFramework.GetShortFolderName()); if (expectedSecondaryShortName != null) { Assert.IsAssignableFrom(typeof(DualCompatibilityFramework), nugetFramework); var extendedFramework = nugetFramework as DualCompatibilityFramework; Assert.Equal(expectedPrimaryShortName, extendedFramework.RootFramework.GetShortFolderName()); Assert.Equal(expectedSecondaryShortName, extendedFramework.SecondaryFramework.GetShortFolderName()); } else { Assert.Null(nugetFramework as DualCompatibilityFramework); } }
public void GetProjectFramework_WithInvalidInput_Throws( string targetFrameworkMoniker, string targetPlatformMoniker, string targetPlatformMinVersion) { Assert.ThrowsAny <Exception>(() => MSBuildProjectFrameworkUtility.GetProjectFramework( projectFilePath: @"C:\csproj", targetFrameworkMoniker, targetPlatformMoniker, targetPlatformMinVersion)); }
internal static NuGetFramework GetTargetFramework(IVsProjectProperties properties, string projectFullPath) { var targetFrameworkMoniker = GetPropertyValueOrNull(properties, ProjectBuildProperties.TargetFrameworkMoniker); var targetPlatformMoniker = GetPropertyValueOrNull(properties, ProjectBuildProperties.TargetPlatformIdentifier); var targetPlatformMinVersion = GetPropertyValueOrNull(properties, ProjectBuildProperties.TargetPlatformMinVersion); return(MSBuildProjectFrameworkUtility.GetProjectFramework( projectFullPath, targetFrameworkMoniker, targetPlatformMoniker, targetPlatformMinVersion)); }
public void GetProjectFramework_WithCanonicalProperties_Succeeds( string targetFrameworkMoniker, string targetPlatformMoniker, string targetPlatformMinVersion, string expectedShortName) { var nugetFramework = MSBuildProjectFrameworkUtility.GetProjectFramework( projectFilePath: @"C:\csproj", targetFrameworkMoniker, targetPlatformMoniker, targetPlatformMinVersion); Assert.Equal(expectedShortName, nugetFramework.GetShortFolderName()); }
public IVsNuGetFramework GetNearestImpl(IVsNuGetFramework targetFramework, IEnumerable <IVsNuGetFramework> fallbackTargetFrameworks, IEnumerable <IVsNuGetFramework> frameworks) { if (targetFramework == null) { throw new ArgumentNullException(nameof(targetFramework)); } if (fallbackTargetFrameworks == null) { throw new ArgumentNullException(nameof(fallbackTargetFrameworks)); } if (frameworks == null) { throw new ArgumentNullException(nameof(frameworks)); } var inputFrameworks = new Dictionary <NuGetFramework, IVsNuGetFramework>(); NuGetFramework ToNuGetFramework(IVsNuGetFramework framework, string paramName) { NuGetFramework nugetFramework = MSBuildProjectFrameworkUtility.GetProjectFramework( projectFilePath: null, targetFrameworkMoniker: framework.TargetFrameworkMoniker, targetPlatformMoniker: framework.TargetPlatformMoniker, targetPlatformMinVersion: framework.TargetPlatformMinVersion); if (!nugetFramework.IsSpecificFramework) { throw new ArgumentException($"Framework '{framework}' could not be parsed", paramName); } inputFrameworks[nugetFramework] = framework; return(nugetFramework); } List <NuGetFramework> ToNuGetFrameworks(IEnumerable <IVsNuGetFramework> enumerable, string paramName) { var list = new List <NuGetFramework>(); foreach (var framework in enumerable) { if (framework == null) { throw new ArgumentException("Enumeration contains a null value", paramName); } NuGetFramework nugetFramework = ToNuGetFramework(framework, paramName); list.Add(nugetFramework); } return(list); } NuGetFramework targetNuGetFramework = ToNuGetFramework(targetFramework, nameof(targetFramework)); List <NuGetFramework> nugetFallbackTargetFrameworks = ToNuGetFrameworks(fallbackTargetFrameworks, nameof(fallbackTargetFrameworks)); List <NuGetFramework> nugetFrameworks = ToNuGetFrameworks(frameworks, nameof(frameworks)); try { if (nugetFallbackTargetFrameworks.Count > 0) { targetNuGetFramework = new FallbackFramework(targetNuGetFramework, nugetFallbackTargetFrameworks); } var reducer = new FrameworkReducer(); var nearest = reducer.GetNearest(targetNuGetFramework, nugetFrameworks); if (nearest == null) { return(null); } var originalFrameworkString = inputFrameworks[nearest]; return(originalFrameworkString); } catch (Exception exception) { _telemetryProvider.PostFault(exception, typeof(VsFrameworkCompatibility).FullName); throw; } }