Пример #1
0
        public async Task <NuGetProject> TryCreateNuGetProjectAsync(IProjectAdapter projectAdapter, ProjectProviderContext context, IProjectRestoreService projectRestoreService, bool forceProjectType)
        {
            var projectSystem = await MSBuildNuGetProjectSystemFactory.CreateMSBuildNuGetProjectSystemAsync(projectAdapter, context.ProjectContext);

            await projectSystem.InitializeAsync();

            var projectServices = new VsMSBuildProjectSystemServices(new MSBuildProjectSystem(projectAdapter, context.ProjectContext), projectAdapter);

            var solutionDirectory = projectAdapter.SolutionDirectory ?? projectAdapter.ProjectDirectory;

            var nuGetSettings = Settings.LoadDefaultSettings(solutionDirectory);

            var folderNuGetProjectFullPath = PackagesFolderPathUtility.GetPackagesFolderPath(solutionDirectory, nuGetSettings);

            var packagesConfigFolderPath = projectAdapter.ProjectDirectory;

            return(new NetFrameworkNuGetProject(projectSystem,
                                                folderNuGetProjectFullPath,
                                                packagesConfigFolderPath,
                                                projectServices));
        }
        public async Task <NuGetProject> TryCreateNuGetProjectAsync(IProjectAdapter projectAdapter, ProjectProviderContext context, IProjectRestoreService projectRestoreService, bool forceProjectType)
        {
            var buildProperties = projectAdapter.BuildProperties;

            // read MSBuild property RestoreProjectStyle, TargetFramework, and TargetFrameworks
            var restoreProjectStyle = await buildProperties.GetPropertyValueAsync(ProjectBuildProperties.RestoreProjectStyle);

            var targetFramework = await buildProperties.GetPropertyValueAsync(ProjectBuildProperties.TargetFramework);

            var targetFrameworks = await buildProperties.GetPropertyValueAsync(ProjectBuildProperties.TargetFrameworks);

            // check for RestoreProjectStyle property is set and if not set to PackageReference then return false
            if (!(string.IsNullOrEmpty(restoreProjectStyle) ||
                  restoreProjectStyle.Equals(PackageReference, StringComparison.OrdinalIgnoreCase)))
            {
                return(null);
            }
            // check whether TargetFramework or TargetFrameworks property is set, else return false
            else if (string.IsNullOrEmpty(targetFramework) && string.IsNullOrEmpty(targetFrameworks))
            {
                return(null);
            }

            //var projectName = projectAdapter.ProjectName;
            //var fullProjectPath = projectAdapter.ProjectFilePath;

            var projectServices = new VsMSBuildProjectSystemServices(new MSBuildProjectSystem(projectAdapter, context.ProjectContext), projectAdapter);

            return(new NetCorePackageReferenceNuGetProject(projectAdapter, projectServices, projectRestoreService));
        }
        public async Task <NuGetProject> TryCreateNuGetProjectAsync(IProjectAdapter vsProjectAdapter, ProjectProviderContext context)
        {
            var exceptions = new List <Exception>();

            foreach (var provider in _providers)
            {
                try
                {
                    var nuGetProject = await provider.TryCreateNuGetProjectAsync(
                        vsProjectAdapter,
                        context,
                        _projectRestoreService,
                        forceProjectType : false);

                    if (nuGetProject != null)
                    {
                        return(nuGetProject);
                    }
                }
                catch (Exception e)
                {
                    // Ignore failures. If this method returns null, the problem falls
                    // into one of the other NuGet project types.
                    exceptions.Add(e);
                }
            }

            exceptions.ForEach(e => _logger.LogError(e.ToString()));

            return(null);
        }