private void AddNugetDependencies()
        {
            EnsurePackageData();

            IList <string> messageNugetPackages;

            // If package is a meta package use dependencies
            // form package info (parsed package.xml)
            // else use real dependencies retrieved form
            // message files.
            if (Package.PackageInfo.IsMetaPackage)
            {
                messageNugetPackages = Package.Parser
                                       .PackageDependencies
                                       .Select(x => NameMapper.ResolveNugetPackageName(x))
                                       .Distinct()
                                       .ToList();
            }
            else
            {
                messageNugetPackages = Package.Parser
                                       .ExternalTypeDependencies
                                       .Select(x => NameMapper.ResolveNugetPackageName(x))
                                       .Distinct()
                                       .ToList();
            }

            if (!messageNugetPackages.Any())
            {
                return;
            }

            Logger.LogInformation($"Restoring package dependencies");

            foreach (var dependency in messageNugetPackages)
            {
                Logger.LogInformation($"  {dependency}");

                try
                {
                    DotNetProcess.AddPackage(_projectFilePath, dependency);
                }
                catch (ProcessFailedException e)
                {
                    Environment.ExitCode |= (int)ExitCodes.CouldNotAddDependency;
                    throw new DependencyNotFoundException(dependency,
                                                          $"Could not add dependency {dependency}.", e);
                }
            }
            Logger.LogInformation(string.Empty);
        }