private static IEnumerable <RoleInstance> CopyAssemblies(PackageReaderResult package, int numberOfInstances) { var configItem = ComputeConfiguration.Instance.ConfigurationItem; string sourceDllFullPath = Path.Combine(configItem.PackageFullFolderPath, package.AssemblyName); return(new PackageController().CopyAssemblies(sourceDllFullPath, configItem.PackageTempFullFolderPath, numberOfInstances)); }
/// <summary> /// Throws exception if packageResult is invalid /// </summary> /// <exception cref="ConfigurationErrorsException">packageResult is invalid</exception> /// <exception cref="FileNotFoundException">assemblyName is invalid</exception> /// <exception cref="ArgumentException">one of the arguments is invalid</exception> /// <exception cref="ArgumentNullException">one of the arguments is null</exception> /// <exception cref="PathTooLongException"> /// either packageConfigurationPath or packageConfigurationPath\assemblyName path is too long /// </exception> private void ValidatePackageResult(PackageReaderResult packageResult, string packageConfigurationPath, int maxAllowedNumberOfInstances = 4) { if (packageResult == null) { throw new ArgumentNullException(nameof(packageResult)); } if (string.IsNullOrWhiteSpace(packageConfigurationPath)) { throw new ArgumentException($"{nameof(packageConfigurationPath)} can't be null, empty or white space!"); } if (packageResult.NumberOfInstances < 0 || packageResult.NumberOfInstances > maxAllowedNumberOfInstances) { throw new ConfigurationErrorsException(nameof(packageResult.NumberOfInstances)); } if (string.IsNullOrWhiteSpace(packageResult.AssemblyName)) { throw new ConfigurationErrorsException(nameof(packageResult.AssemblyName)); } string assemblyFullPath = Path.GetFullPath(Path.Combine(packageConfigurationPath, $"..\\{packageResult.AssemblyName}")); if (!this.fileIO.FileExists(assemblyFullPath)) { throw new FileNotFoundException(assemblyFullPath); } }
private static void CopyDependencies(PackageReaderResult package) { var configItem = ComputeConfiguration.Instance.ConfigurationItem; var packageController = new PackageController(); var root = new DirectoryInfo(configItem.PackageFullFolderPath); var fileEnumerator = root .EnumerateFiles() .Where(fi => fi.Extension == ".dll" && !fi.Name.Contains(package.AssemblyName)); foreach (var file in fileEnumerator) { var destPath = Path.Combine(configItem.PackageTempFullFolderPath, file.Name); if (!packageController.CopyFile(file.FullName, destPath)) { Console.Error.WriteLine($"Failed to copy file from {file.FullName} to {destPath}"); } } }
public ValidPackageFoundEventArgs(PackageReaderResult package) { this.Package = package ?? throw new ArgumentNullException(nameof(package)); }
private void OnValidPackageFound(PackageReaderResult package) { ValidPackageFound?.Invoke(this, new ValidPackageFoundEventArgs(package)); }