File: AspNetCoreOnFullFramework.cs
Web Access
Project: ..\..\..\test\Microsoft.NET.Build.Tests\Microsoft.NET.Build.Tests.csproj (Microsoft.NET.Build.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.DotNet.Cli.Utils;
 
namespace Microsoft.NET.Build.Tests
{
    public class AspNetCoreOnFullFramework : SdkTest
    {
        public AspNetCoreOnFullFramework(ITestOutputHelper log) : base(log)
        {
        }
 
        [WindowsOnlyTheory]
        [InlineData("1.1.2")]
        [InlineData("2.0.4")]
        public void It_discovers_assembly_parts(string aspnetVersion)
        {
            var testProject = new TestProject()
            {
                Name = "AssemblyPartDiscovery",
                TargetFrameworks = "net462",
                IsExe = true
            };
 
            testProject.SourceFiles["Program.cs"] = @"
using Microsoft.AspNetCore.Mvc.Internal;
using Microsoft.Extensions.DependencyModel;
using System.IO;
using System.Linq;
 
public class Program
{
    public static void Main(string[] args)
    {
        var parts = DefaultAssemblyPartDiscoveryProvider.DiscoverAssemblyParts(""" + testProject.Name + @""");
        foreach (var item in parts)
        {
            System.Console.WriteLine(item.Name);
        }
    }
}";
 
            TestProject referencedProjectWithPart = new()
            {
                Name = "ReferencedProjectWithPart",
                TargetFrameworks = "net462",
                IsExe = false
            };
 
 
            referencedProjectWithPart.References.Add("System.ServiceModel");
 
            referencedProjectWithPart.SourceFiles["Class1.cs"] = @"
class Class1
{
    public string X => typeof(System.ServiceModel.AddressFilterMode).ToString();
}";
 
            TestProject referencedProjectWithMvc = new()
            {
                Name = "ReferencedProjectWithMVC",
                ProjectSdk = "Microsoft.NET.Sdk.Web",
                TargetFrameworks = "net462",
                IsExe = false
            };
 
            referencedProjectWithMvc.PackageReferences.Add(new TestPackageReference("Microsoft.AspNetCore.Mvc", aspnetVersion));
 
            testProject.ReferencedProjects.Add(referencedProjectWithPart);
            testProject.ReferencedProjects.Add(referencedProjectWithMvc);
 
            var testProjectInstance = _testAssetsManager
                .CreateTestProject(testProject, identifier: aspnetVersion);
 
            var buildCommand = new BuildCommand(testProjectInstance);
 
            buildCommand.Execute()
                .Should()
                .Pass();
 
            string outputPath = buildCommand.GetOutputDirectory(testProject.TargetFrameworks).FullName;
 
            string exePath = Path.Combine(outputPath, testProject.Name + ".exe");
 
            var toolCommandSpec = new SdkCommandSpec()
            {
                FileName = exePath
            };
            TestContext.Current.AddTestEnvironmentVariables(toolCommandSpec.Environment);
 
            ICommand toolCommand = toolCommandSpec.ToCommand().CaptureStdOut();
 
            var toolResult = toolCommand.Execute();
 
            toolResult.Should().Pass();
        }
    }
}