GivenThatWeWantToUseFrameworkRoslyn.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT license.
  3. namespace Microsoft.NET.Restore.Tests
  4. {
  5. public class GivenThatWeWantToUseFrameworkRoslyn : SdkTest
  6. {
  7. public GivenThatWeWantToUseFrameworkRoslyn(ITestOutputHelper log) : base(log)
  8. {
  9. }
  10. [FullMSBuildOnlyFact]
  11. public void It_restores_Microsoft_Net_Compilers_Toolset_Framework_when_requested()
  12. {
  13. const string testProjectName = "NetCoreApp";
  14. var project = new TestProject
  15. {
  16. Name = testProjectName,
  17. TargetFrameworks = "net6.0",
  18. };
  19. project.AdditionalProperties.Add("BuildWithNetFrameworkHostedCompiler", "true");
  20. var testAsset = _testAssetsManager
  21. .CreateTestProject(project);
  22. string projectAssetsJsonPath = Path.Combine(
  23. testAsset.Path,
  24. project.Name,
  25. "obj",
  26. "project.assets.json");
  27. var restoreCommand =
  28. testAsset.GetRestoreCommand(Log, relativePath: testProjectName);
  29. restoreCommand.Execute().Should().Pass();
  30. Assert.Contains("Microsoft.Net.Compilers.Toolset.Framework", File.ReadAllText(projectAssetsJsonPath));
  31. }
  32. [FullMSBuildOnlyFact]
  33. public void It_restores_Microsoft_Net_Compilers_Toolset_Framework_when_MSBuild_is_torn()
  34. {
  35. const string testProjectName = "NetCoreApp";
  36. var project = new TestProject
  37. {
  38. Name = testProjectName,
  39. TargetFrameworks = "net6.0",
  40. };
  41. // simulate mismatched MSBuild versions
  42. project.AdditionalProperties.Add("_IsDisjointMSBuildVersion", "true");
  43. var testAsset = _testAssetsManager
  44. .CreateTestProject(project);
  45. string projectAssetsJsonPath = Path.Combine(
  46. testAsset.Path,
  47. project.Name,
  48. "obj",
  49. "project.assets.json");
  50. var restoreCommand =
  51. testAsset.GetRestoreCommand(Log, relativePath: testProjectName);
  52. restoreCommand.Execute().Should().Pass();
  53. if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
  54. {
  55. Assert.Contains("Microsoft.Net.Compilers.Toolset.Framework", File.ReadAllText(projectAssetsJsonPath));
  56. }
  57. else
  58. {
  59. Assert.DoesNotContain("Microsoft.Net.Compilers.Toolset.Framework", File.ReadAllText(projectAssetsJsonPath));
  60. }
  61. }
  62. [FullMSBuildOnlyFact]
  63. public void It_throws_a_warning_when_adding_the_PackageReference_directly()
  64. {
  65. const string testProjectName = "NetCoreApp";
  66. var project = new TestProject
  67. {
  68. Name = testProjectName,
  69. TargetFrameworks = "net6.0",
  70. };
  71. project.PackageReferences.Add(new TestPackageReference("Microsoft.Net.Compilers.Toolset.Framework", "4.7.0-2.23260.7"));
  72. var testAsset = _testAssetsManager
  73. .CreateTestProject(project);
  74. var restoreCommand =
  75. testAsset.GetRestoreCommand(Log, relativePath: testProjectName);
  76. var result = restoreCommand.Execute();
  77. result.Should().Pass();
  78. result.Should().HaveStdOutContaining("NETSDK1205");
  79. }
  80. }
  81. }