public TestProjectFixture(
            string testProjectName,
            RepoDirectoriesProvider repoDirectoriesProvider,
            string exeExtension               = null,
            string sharedLibraryExtension     = null,
            string sharedLibraryPrefix        = null,
            string testProjectSourceDirectory = null,
            string testArtifactDirectory      = null,
            string dotnetInstallPath          = null,
            string currentRid            = null,
            string builtDotnetOutputPath = null)
        {
            ValidateRequiredDirectories(repoDirectoriesProvider);

            _testProjectName = testProjectName;

            _exeExtension           = exeExtension ?? RuntimeInformationExtensions.GetExeExtensionForCurrentOSPlatform();
            _sharedLibraryExtension = sharedLibraryExtension
                                      ?? RuntimeInformationExtensions.GetSharedLibraryExtensionForCurrentPlatform();
            _sharedLibraryPrefix = sharedLibraryPrefix
                                   ?? RuntimeInformationExtensions.GetSharedLibraryPrefixForCurrentPlatform();

            _repoDirectoriesProvider = repoDirectoriesProvider;

            _testProjectSourceDirectory = testProjectSourceDirectory
                                          ?? Path.Combine(repoDirectoriesProvider.RepoRoot, "TestAssets", "TestProjects");
            _testArtifactDirectory = _testArtifactDirectory
                                     ?? Environment.GetEnvironmentVariable(s_testArtifactDirectoryEnvironmentVariable)
                                     ?? Path.Combine(AppContext.BaseDirectory, s_testArtifactDirectoryEnvironmentVariable);

            _sdkDotnet  = new DotNetCli(dotnetInstallPath ?? DotNetCli.GetStage0Path(repoDirectoriesProvider.RepoRoot));
            _currentRid = currentRid ?? repoDirectoriesProvider.TargetRID;

            _builtDotnet = new DotNetCli(repoDirectoriesProvider.BuiltDotnet);

            InitializeTestProject(
                _testProjectName,
                _testProjectSourceDirectory,
                _testArtifactDirectory,
                _exeExtension,
                _sharedLibraryExtension,
                _sharedLibraryPrefix);
        }
 private string GetCurrentRid(string repoRoot)
 {
     return(new DotNetCli(DotNetCli.GetStage0Path(repoRoot)).GetRuntimeId());
 }