Exemple #1
0
        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));
        }
Exemple #2
0
        /// <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);
            }
        }
Exemple #3
0
        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));
 }