Exemple #1
0
        private IEnumerable <ManifestId> GetInstalledManifestIds()
        {
            var manifestDirs = _workloadManifestProvider.GetManifestDirectories();

            var manifests = new List <ManifestId>();

            foreach (var manifestDir in manifestDirs)
            {
                var manifestId = Path.GetFileName(manifestDir);
                manifests.Add(new ManifestId(manifestId));
            }
            return(manifests);
        }
Exemple #2
0
        public override SdkResult Resolve(SdkReference sdkReference, SdkResolverContext resolverContext, SdkResultFactory factory)
        {
            if (!_enabled)
            {
                return(null);
            }

            InitializeWorkloadResolver(resolverContext);

            if (sdkReference.Name.Equals("Microsoft.NET.SDK.WorkloadAutoImportPropsLocator", StringComparison.OrdinalIgnoreCase))
            {
                List <string> autoImportSdkPaths = new List <string>();
                foreach (var sdkPackInfo in _workloadResolver.GetInstalledWorkloadPacksOfKind(WorkloadPackKind.Sdk))
                {
                    string sdkPackSdkFolder = Path.Combine(sdkPackInfo.Path, "Sdk");
                    string autoImportPath   = Path.Combine(sdkPackSdkFolder, "AutoImport.props");
                    if (File.Exists(autoImportPath))
                    {
                        autoImportSdkPaths.Add(sdkPackSdkFolder);
                    }
                }
                //  Call Distinct() here because with aliased packs, there may be duplicates of the same path
                return(factory.IndicateSuccess(autoImportSdkPaths.Distinct(), sdkReference.Version));
            }
            else if (sdkReference.Name.Equals("Microsoft.NET.SDK.WorkloadManifestTargetsLocator", StringComparison.OrdinalIgnoreCase))
            {
                List <string> workloadManifestPaths = new List <string>();
                foreach (var manifestDirectory in _workloadManifestProvider.GetManifestDirectories())
                {
                    var workloadManifestTargetPath = Path.Combine(manifestDirectory, "WorkloadManifest.targets");
                    if (File.Exists(workloadManifestTargetPath))
                    {
                        workloadManifestPaths.Add(manifestDirectory);
                    }
                }
                return(factory.IndicateSuccess(workloadManifestPaths, sdkReference.Version));
            }
            else
            {
                var packInfo = _workloadResolver.TryGetPackInfo(sdkReference.Name);
                if (packInfo != null)
                {
                    if (Directory.Exists(packInfo.Path))
                    {
                        return(factory.IndicateSuccess(Path.Combine(packInfo.Path, "Sdk"), sdkReference.Version));
                    }
                    else
                    {
                        var itemsToAdd = new Dictionary <string, SdkResultItem>();
                        itemsToAdd.Add("MissingWorkloadPack",
                                       new SdkResultItem(sdkReference.Name,
                                                         metadata: new Dictionary <string, string>()
                        {
                            { "Version", packInfo.Version }
                        }));

                        Dictionary <string, string> propertiesToAdd = new Dictionary <string, string>();
                        return(factory.IndicateSuccess(Enumerable.Empty <string>(),
                                                       sdkReference.Version,
                                                       propertiesToAdd: propertiesToAdd,
                                                       itemsToAdd: itemsToAdd));
                    }
                }
            }
            return(null);
        }