/// <summary> /// Generates the full path to the service of the name specified from within this resolved package reference. /// </summary> /// <param name="resolvedPackageReference">The package containing the Tools Service binaries</param> /// <param name="serviceName">The name of the exe to search for (without the extension)</param> /// <returns></returns> public static string PathToToolsService(this ResolvedPackageReference resolvedPackageReference, string serviceName) { var pathToService = ""; if (resolvedPackageReference is not null) { // Extract the platform 'osx-x64' from the package name 'runtime.osx-x64.native.microsoft.sqltoolsservice' var packageNameSegments = resolvedPackageReference.PackageName.Split("."); if (packageNameSegments.Length > 2) { var platform = packageNameSegments[1]; // Build the path to the MicrosoftSqlToolsServiceLayer executable by reaching into the resolve nuget package // assuming a convention for native binaries. pathToService = Path.Combine( resolvedPackageReference.PackageRoot, "runtimes", platform, "native", serviceName); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { pathToService += ".exe"; } } } return(pathToService); }
/// <summary> /// Generates and serializes a <see cref="DependencyProviderUtils.Metadata"/> to /// <paramref name="writePath"/>. Returns a list of file paths which include the /// the serialized <see cref="DependencyProviderUtils.Metadata"/> and nuget file /// dependencies. /// </summary> /// <param name="writePath">Path to write metadata.</param> /// <returns> /// List of file paths of the serialized <see cref="DependencyProviderUtils.Metadata"/> /// and nuget file dependencies. /// </returns> internal IEnumerable <string> GetFiles(string writePath) { IEnumerable <ResolvedNuGetPackage> nugetPackagesToCopy = GetNewPackages(); var assemblyProbingPaths = new List <string>(); var nativeProbingPaths = new List <string>(); var nugetMetadata = new List <DependencyProviderUtils.NuGetMetadata>(); foreach (ResolvedNuGetPackage package in nugetPackagesToCopy) { ResolvedPackageReference resolvedPackage = package.ResolvedPackage; foreach (FileInfo asmPath in resolvedPackage.AssemblyPaths) { // asmPath.FullName // /path/to/packages/package.name/package.version/lib/framework/1.dll // resolvedPackage.PackageRoot // /path/to/packages/package.name/package.version/ // GetRelativeToPackages(..) // package.name/package.version/lib/framework/1.dll assemblyProbingPaths.Add( GetPathRelativeToPackages( asmPath.FullName, resolvedPackage.PackageRoot)); } foreach (DirectoryInfo probePath in resolvedPackage.ProbingPaths) { // probePath.FullName // /path/to/packages/package.name/package.version/ // resolvedPackage.PackageRoot // /path/to/packages/package.name/package.version/ // GetRelativeToPackages(..) // package.name/package.version nativeProbingPaths.Add( GetPathRelativeToPackages( probePath.FullName, resolvedPackage.PackageRoot)); } nugetMetadata.Add( new DependencyProviderUtils.NuGetMetadata { FileName = package.NuGetFile.Name, PackageName = resolvedPackage.PackageName, PackageVersion = resolvedPackage.PackageVersion }); yield return(package.NuGetFile.FullName); } if (nugetMetadata.Count > 0) { var metadataPath = Path.Combine( writePath, DependencyProviderUtils.CreateFileName( Interlocked.Increment(ref _metadataCounter))); new DependencyProviderUtils.Metadata { AssemblyProbingPaths = assemblyProbingPaths.ToArray(), NativeProbingPaths = nativeProbingPaths.ToArray(), NuGets = nugetMetadata.ToArray() }.Serialize(metadataPath); yield return(metadataPath); } }
public PackageAdded( ResolvedPackageReference packageReference, AddPackage command = null) : base(command) { PackageReference = packageReference ?? throw new ArgumentNullException(nameof(packageReference)); }