public MsbuildIntegrationTestFixture() { _cliDirectory = TestDotnetCLiUtility.CopyAndPatchLatestDotnetCli(); var dotnetExecutableName = RuntimeEnvironmentHelper.IsWindows ? "dotnet.exe" : "dotnet"; TestDotnetCli = Path.Combine(_cliDirectory, dotnetExecutableName); var sdkPath = Directory.EnumerateDirectories(Path.Combine(_cliDirectory, "sdk")) .Where(d => !string.Equals(Path.GetFileName(d), "NuGetFallbackFolder", StringComparison.OrdinalIgnoreCase)) .Single(); MsBuildSdksPath = Path.Combine(sdkPath, "Sdks"); _templateDirectory = new SimpleTestPathContext(); TestDotnetCLiUtility.WriteGlobalJson(_templateDirectory.WorkingDirectory); // some project templates use implicit packages. For example, class libraries targeting netstandard2.0 // will have an implicit package reference for NETStandard.Library, and its dependencies. // .NET Core SDK 3.0 and later no longer ship these packages in a NuGetFallbackFolder. Therefore, we need // to be able to download these packages. We'll download it once into the template cache's global packages // folder, and then use that as a local source for individual tests, to minimise network access. var addSourceArgs = new AddSourceArgs() { Configfile = _templateDirectory.NuGetConfig, Name = "nuget.org", Source = "https://api.nuget.org/v3/index.json" }; AddSourceRunner.Run(addSourceArgs, () => NullLogger.Instance); _processEnvVars.Add("MSBuildSDKsPath", MsBuildSdksPath); _processEnvVars.Add("UseSharedCompilation", "false"); _processEnvVars.Add("DOTNET_MULTILEVEL_LOOKUP", "0"); _processEnvVars.Add("MSBUILDDISABLENODEREUSE ", "true"); }
internal TestDirectory Build(TestDirectoryBuilder testDirectoryBuilder) { var testDirectory = testDirectoryBuilder.Build(); TestDotnetCLiUtility.WriteGlobalJson(testDirectory); return(testDirectory); }
internal TestDirectory CreateTestDirectory() { var testDirectory = TestDirectory.Create(); TestDotnetCLiUtility.WriteGlobalJson(testDirectory); return(testDirectory); }
internal SimpleTestPathContext CreateSimpleTestPathContext() { var simpleTestPathContext = new SimpleTestPathContext(); TestDotnetCLiUtility.WriteGlobalJson(simpleTestPathContext.WorkingDirectory); // Some template and TFM combinations need packages, for example NETStandard.Library. // The template cache should have downloaded it already, so use the template cache's // global packages folder as a local source. var addSourceArgs = new AddSourceArgs() { Configfile = simpleTestPathContext.NuGetConfig, Name = "template", Source = _templateDirectory.UserPackagesFolder }; AddSourceRunner.Run(addSourceArgs, () => NullLogger.Instance); return(simpleTestPathContext); }