Esempio n. 1
0
            static void RegisterPackage(NuGetFetcher.NuGetPackage package, bool userDefined, HashSet <MetadataReference> references)
            {
                if (package == null)
                {
                    return;
                }

                using (DisableMatchingAdditionalAssembliesByName())
                {
                    foreach (string library in package.Libraries)
                    {
                        var assembly = LoadAssembly(library);

                        if (userDefined)
                        {
                            NuGetNativeLibraryResolver.RegisterAssembly(assembly);
                        }

                        references.Add(RegisterAssembly(assembly));
                    }
                }

                if (userDefined)
                {
                    NuGetNativeLibraryResolver.RegisterPath(package.NativePath);
                }

                foreach (NuGetFetcher.NuGetPackage dependency in package.Dependencies)
                {
                    RegisterPackage(dependency, userDefined: false, references);
                }
            }
Esempio n. 2
0
            static HashSet <MetadataReference> FromPackage(string packageName, string packageVersion, string packageSourceUrl)
            {
                try
                {
                    if (string.IsNullOrWhiteSpace(packageName))
                    {
                        throw new ArgumentException($"'{nameof(packageName)}' cannot be null or whitespace", nameof(packageName));
                    }

                    if (string.IsNullOrWhiteSpace(packageVersion))
                    {
                        throw new ArgumentException($"'{nameof(packageVersion)}' cannot be null or whitespace", nameof(packageVersion));
                    }

                    var package = AsyncHelpers.RunSync(() => MultiSourceNuGetFetcher.Instance.DownloadAsync(packageName, packageVersion, packageSourceUrl));
                    if (package == null)
                    {
                        throw new InvalidOperationException($"NuGet package '{packageName}' version '{packageVersion}' from '{packageSourceUrl ?? MultiSourceNuGetFetcher.Instance.DefaultPackageSourceUrl}' does not exist.");
                    }

                    var references = new HashSet <MetadataReference>();

                    RegisterPackage(package, userDefined: true, references);

                    NuGetNativeLibraryResolver.EnsureAssembliesRegisteredToNativeLibraries();

                    return(references);
                }
                catch (Exception e)
                {
                    throw new IndexCompilationException($"Cannot load NuGet package '{packageName}' version '{packageVersion}' from '{packageSourceUrl ?? MultiSourceNuGetFetcher.Instance.DefaultPackageSourceUrl}'.", e);
                }
            }