private static bool GetPropertyBoolOrFalse( IVsReferenceItem item, string propertyName) { try { return(MSBuildStringUtility.IsTrue(item.Properties?.Item(propertyName)?.Value)); } catch (ArgumentException) { } catch (KeyNotFoundException) { } return(false); }
internal PackageSpecReferenceDependencyProvider( IEnumerable <ExternalProjectReference> externalProjects, ILogger logger, IEnvironmentVariableReader environmentVariableReader) { if (externalProjects == null) { throw new ArgumentNullException(nameof(externalProjects)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } _logger = logger; foreach (var project in externalProjects) { Debug.Assert( !_externalProjectsByPath.ContainsKey(project.UniqueName), $"Duplicate project {project.UniqueName}"); if (!_externalProjectsByPath.ContainsKey(project.UniqueName)) { _externalProjectsByPath.Add(project.UniqueName, project); } Debug.Assert( !_externalProjectsByUniqueName.ContainsKey(project.ProjectName), $"Duplicate project {project.ProjectName}"); if (!_externalProjectsByUniqueName.ContainsKey(project.ProjectName)) { _externalProjectsByUniqueName.Add(project.ProjectName, project); } if (!_externalProjectsByUniqueName.ContainsKey(project.UniqueName)) { _externalProjectsByUniqueName.Add(project.UniqueName, project); } } _useLegacyAssetTargetFallbackBehavior = MSBuildStringUtility.IsTrue(environmentVariableReader.GetEnvironmentVariable("NUGET_USE_LEGACY_ASSET_TARGET_FALLBACK_DEPENDENCY_RESOLUTION")); }
public static bool IsNuGetLockFileEnabled(PackageSpec project) { var restorePackagesWithLockFile = project.RestoreMetadata?.RestoreLockProperties.RestorePackagesWithLockFile; return(MSBuildStringUtility.IsTrue(restorePackagesWithLockFile) || File.Exists(GetNuGetLockFilePath(project))); }
private async Task <bool> IsCentralPackageManagementVersionsEnabledAsync() { return(MSBuildStringUtility.IsTrue(await _vsProjectAdapter.GetPropertyValueAsync(ProjectBuildProperties.ManagePackageVersionsCentrally))); }
public async Task <bool> IsRestoreLockedAsync() { var value = await GetPropertyValueAsync(ProjectBuildProperties.RestoreLockedMode); return(MSBuildStringUtility.IsTrue(value)); }
private async Task <bool> IsCentralPackageTransitivePinningEnabledAsync() { string value = await _vsProjectAdapter.GetPropertyValueAsync(ProjectBuildProperties.CentralPackageTransitivePinningEnabled); return(MSBuildStringUtility.IsTrue(value)); }
/// <summary> /// Emulates a JSON deserialization from project.json to PackageSpec in a post-project.json world /// </summary> private async Task <PackageSpec> GetPackageSpecAsync(ISettings settings) { await _threadingService.JoinableTaskFactory.SwitchToMainThreadAsync(); var projectReferences = await ProjectServices .ReferencesReader .GetProjectReferencesAsync(NullLogger.Instance, CancellationToken.None); var targetFramework = await _vsProjectAdapter.GetTargetFrameworkAsync(); var packageReferences = (await ProjectServices .ReferencesReader .GetPackageReferencesAsync(targetFramework, CancellationToken.None)) .ToList(); var packageTargetFallback = MSBuildStringUtility.Split(GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.PackageTargetFallback)) .Select(NuGetFramework.Parse) .ToList(); var assetTargetFallback = MSBuildStringUtility.Split(GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.AssetTargetFallback)) .Select(NuGetFramework.Parse) .ToList(); var projectTfi = new TargetFrameworkInformation { FrameworkName = targetFramework, Dependencies = packageReferences, }; bool isCpvmEnabled = MSBuildStringUtility.IsTrue(GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.ManagePackageVersionsCentrally)); if (isCpvmEnabled) { // Add the central version information and merge the information to the package reference dependencies projectTfi.CentralPackageVersions.AddRange(await GetCentralPackageVersionsAsync()); LibraryDependency.ApplyCentralVersionInformation(projectTfi.Dependencies, projectTfi.CentralPackageVersions); } // Apply fallback settings AssetTargetFallbackUtility.ApplyFramework(projectTfi, packageTargetFallback, assetTargetFallback); // Build up runtime information. var runtimes = await _vsProjectAdapter.GetRuntimeIdentifiersAsync(); var supports = await _vsProjectAdapter.GetRuntimeSupportsAsync(); var runtimeGraph = new RuntimeGraph(runtimes, supports); // In legacy CSProj, we only have one target framework per project var tfis = new TargetFrameworkInformation[] { projectTfi }; var projectName = ProjectName ?? ProjectUniqueName; string specifiedPackageId = _vsProjectAdapter.BuildProperties.GetPropertyValue(ProjectBuildProperties.PackageId); if (!string.IsNullOrWhiteSpace(specifiedPackageId)) { projectName = specifiedPackageId; } else { string specifiedAssemblyName = _vsProjectAdapter.BuildProperties.GetPropertyValue(ProjectBuildProperties.AssemblyName); if (!string.IsNullOrWhiteSpace(specifiedAssemblyName)) { projectName = specifiedAssemblyName; } } return(new PackageSpec(tfis) { Name = projectName, Version = new NuGetVersion(_vsProjectAdapter.Version), FilePath = ProjectFullPath, RuntimeGraph = runtimeGraph, RestoreMetadata = new ProjectRestoreMetadata { ProjectStyle = ProjectStyle.PackageReference, OutputPath = await GetMSBuildProjectExtensionsPathAsync(), ProjectPath = ProjectFullPath, ProjectName = projectName, ProjectUniqueName = ProjectFullPath, OriginalTargetFrameworks = tfis .Select(tfi => tfi.FrameworkName.GetShortFolderName()) .ToList(), TargetFrameworks = new List <ProjectRestoreMetadataFrameworkInfo> { new ProjectRestoreMetadataFrameworkInfo(tfis[0].FrameworkName) { ProjectReferences = projectReferences?.ToList() } }, SkipContentFileWrite = true, CacheFilePath = await GetCacheFilePathAsync(), PackagesPath = GetPackagesPath(settings), Sources = GetSources(settings), FallbackFolders = GetFallbackFolders(settings), ConfigFilePaths = GetConfigFilePaths(settings), ProjectWideWarningProperties = WarningProperties.GetWarningProperties( treatWarningsAsErrors: GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.TreatWarningsAsErrors), noWarn: GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.NoWarn), warningsAsErrors: GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.WarningsAsErrors)), RestoreLockProperties = new RestoreLockProperties( GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.RestorePackagesWithLockFile), GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.NuGetLockFilePath), MSBuildStringUtility.IsTrue(GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.RestoreLockedMode))), CentralPackageVersionsEnabled = isCpvmEnabled, CentralPackageVersionOverrideDisabled = GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.CentralPackageVersionOverrideEnabled).EqualsFalse(), CentralPackageTransitivePinningEnabled = MSBuildStringUtility.IsTrue(GetPropertySafe(_vsProjectAdapter.BuildProperties, ProjectBuildProperties.CentralPackageTransitivePinningEnabled)), } }); }