protected virtual void AddLinkOptions(TestCaseSandbox sandbox, ManagedCompilationResult compilationResult, LinkerArgumentBuilder builder, TestCaseMetadataProvider metadataProvider) { var caseDefinedOptions = metadataProvider.GetLinkerOptions(sandbox.InputDirectory); builder.AddOutputDirectory(sandbox.OutputDirectory); foreach (var rspFile in sandbox.ResponseFiles) { builder.AddResponseFile(rspFile); } foreach (var inputReference in sandbox.InputDirectory.Files()) { var ext = inputReference.ExtensionWithDot; if (ext == ".dll" || ext == ".exe") { builder.AddReference(inputReference); } } var coreAction = caseDefinedOptions.TrimMode ?? "skip"; foreach (var extraReference in metadataProvider.GetExtraLinkerReferences()) { builder.AddReference(extraReference); builder.AddAssemblyAction(coreAction, extraReference.FileNameWithoutExtension); } builder.ProcessOptions(caseDefinedOptions); builder.ProcessTestInputAssembly(compilationResult.InputAssemblyPath); }
protected virtual void AddLinkOptions(TestCaseSandbox sandbox, ManagedCompilationResult compilationResult, ILCompilerOptionsBuilder builder, TestCaseMetadataProvider metadataProvider) { var caseDefinedOptions = metadataProvider.GetLinkerOptions(sandbox.InputDirectory); builder.AddOutputDirectory(sandbox.OutputDirectory.Combine(compilationResult.InputAssemblyPath.FileNameWithoutExtension + ".obj")); foreach (var rspFile in sandbox.ResponseFiles) { builder.AddResponseFile(rspFile); } foreach (var inputReference in sandbox.InputDirectory.Files()) { var ext = inputReference.ExtensionWithDot; if (ext == ".dll" || ext == ".exe") { if (caseDefinedOptions.AssembliesAction.Contains(("link", inputReference.FileNameWithoutExtension))) { builder.AddLinkAssembly(inputReference); } else { builder.AddReference(inputReference); } } }