Beispiel #1
0
 private void AddXunitIdePackages(QualifierId qualifier)
 {
     if (ProjectsByQualifier.TryGetValue(qualifier, out var project))
     {
         AddPackageReference(project, "Microsoft.NET.Test.Sdk", "16.5.0");
         var pkgRef = AddPackageReference(project, "xunit.runner.visualstudio", "2.4.1");
         pkgRef.SetMetadata("PrivateAssets", "all");
         pkgRef.SetMetadata("IncludeAssets", "runtime; build; native; contentfiles; analyzers; buildtransitive");
     }
 }
Beispiel #2
0
        internal override void VisitDirectory(SealDirectory sealDirectory)
        {
            if (ProjectsByQualifier.TryGetValue(sealDirectory.Provenance.QualifierId, out var project))
            {
                if (sealDirectory.Tags.Contains(Context.AssemblyDeploymentTag))
                {
                    SetOutputDirectory(project, sealDirectory.Directory.Path, OutputDirectoryType.AssemblyDeployment);
                }

                if (sealDirectory.Tags.Contains(Context.TestDeploymentTag))
                {
                    MakeTestProject();
                    SetOutputDirectory(project, sealDirectory.Directory.Path, OutputDirectoryType.TestDeployment);
                }
            }
        }
Beispiel #3
0
        internal override void VisitDirectory(SealDirectory sealDirectory)
        {
            Project project;
            string  friendlyQualifier = Context.QualifierTable.GetCanonicalDisplayString(sealDirectory.Provenance.QualifierId);

            if (ProjectsByQualifier.TryGetValue(friendlyQualifier, out project))
            {
                if (sealDirectory.Tags.Contains(Context.AssemblyDeploymentTag))
                {
                    SetOutputDirectory(project, sealDirectory.Directory.Path, OutputDirectoryType.AssemblyDeployment);
                }

                if (sealDirectory.Tags.Contains(Context.TestDeploymentTag))
                {
                    MakeTestProject();
                    SetOutputDirectory(project, sealDirectory.Directory.Path, OutputDirectoryType.TestDeployment);
                }
            }
        }
Beispiel #4
0
        private void ExtractOutputPathFromUnitTest(Process process, string qualifier, int position)
        {
            MakeTestProject();

            var     arguments = Context.GetArgumentsDataFromProcess(process);
            Project project;

            if (ProjectsByQualifier.TryGetValue(qualifier, out project))
            {
                int i = 0;
                foreach (var arg in arguments)
                {
                    var type = arg.FragmentType;
                    if (i++ == position && type == PipFragmentType.AbsolutePath)
                    {
                        var path = GetPathValue(arg).GetParent(Context.PathTable);
                        SetOutputDirectory(project, path, OutputDirectoryType.TestDeployment);
                    }
                }
            }
        }
Beispiel #5
0
        internal override void VisitProcess(Process process, ProcessType pipCategory)
        {
            string friendlyQualifier = Context.QualifierTable.GetCanonicalDisplayString(process.Provenance.QualifierId);

            // TODO: After fixing the qualifier in the DS, I will start using the qualifier id instead of friendly qualifier name
            // Context.QualifierTable.GetQualifiedOutputDirectoryPart(Context.StringTable, qualifierId).ToString(Context.StringTable);
            var arguments = Context.GetArgumentsDataFromProcess(process);

            Project project;

            if (!ProjectsByQualifier.TryGetValue(friendlyQualifier, out project))
            {
                project = CreateProject(process);
                project.SetProperty("PlatformToolset", "v140");

                FillProjectConfigurations(project);
                AddHeaderFiles(project);

                ProjectsByQualifier.Add(friendlyQualifier, project);
            }

            switch (pipCategory)
            {
            case ProcessType.Cl:
                IterateClArguments(project, arguments);
                break;

            case ProcessType.Link:
                IterateLinkArguments(project, arguments);

                // If this is DS, use WorkingDirectory as an output folder.
                var outputDir = ExtensionUtilities.IsScriptExtension(SpecFilePath.GetExtension(Context.PathTable).ToString(Context.StringTable)) ?
                                process.WorkingDirectory :
                                process.UniqueOutputDirectory;
                SetOutputDirectory(project, outputDir, OutputDirectoryType.Build);

                break;
            }
        }