Link task

Note

This task is only available when using the C++ build system.

Wraps the Microsoft C++ linker tool, link.exe. The linker tool links Common Object File Format (COFF) object files and libraries to create an executable (.exe) file or a dynamic-link library (DLL). For more information, see Linker options and Use MSBuild from the command line and Use the Microsoft C++ toolset from the command line.

Parameters

The following describes the parameters of the Link task. Most task parameters, and a few sets of parameters, correspond to a command-line option.

  • AdditionalDependencies

    Optional String[] parameter.

    Specifies a list of input files to add to the command.

    For more information, see LINK input files.

  • AdditionalLibraryDirectories

    Optional String[] parameter.

    Overrides the environment library path. Specify a directory name.

    For more information, see /LIBPATH (Additional Libpath).

  • AdditionalManifestDependencies

    Optional String[] parameter.

    Specifies attributes that will be placed in the dependency section of the manifest file.

    For more information, see /MANIFESTDEPENDENCY (Specify manifest dependencies). Also see Publisher configuration files.

  • AdditionalOptions

    Optional String parameter.

    A list of linker options as specified on the command line. For example, /<option1> /<option2> /<option#>. Use this parameter to specify linker options that are not represented by any other Link task parameter.

    For more information, see Linker options.

  • AddModuleNamesToAssembly

    Optional String[] parameter.

    Adds a module reference to an assembly.

    For more information, see /ASSEMBLYMODULE (Add a MSIL module to the assembly).

  • AllowIsolation

    Optional Boolean parameter.

    If true, causes the operating system to do manifest lookups and loads. If false, indicates that DLLs are loaded as if there was no manifest.

    For more information, see /ALLOWISOLATION (Manifest lookup).

  • AssemblyDebug

    Optional Boolean parameter.

    If true, emits the DebuggableAttribute attribute together with debug information tracking and disables JIT optimizations. If false, emits the DebuggableAttribute attribute but disables debug information tracking and enables JIT optimizations.

    For more information, see /ASSEMBLYDEBUG (Add DebuggableAttribute).

  • AssemblyLinkResource

    Optional String[] parameter.

    Creates a link to a .NET Framework resource in the output file; the resource file is not placed in the output file. Specify the name of the resource.

    For more information, see /ASSEMBLYLINKRESOURCE (Link to .NET Framework resource).

  • AttributeFileTracking

    Implicit Boolean parameter.

    Enables deeper file tracking to capture link incremental's behavior. Always returns true.

  • BaseAddress

    Optional String parameter.

    Sets a base address for the program or DLL being built. Specify {address[,size] | @filename,key}.

    For more information, see /BASE (Base address).

  • BuildingInIDE

    Optional Boolean parameter.

    If true, indicates that MSBuild is invoked from the IDE. Otherwise, indicates that MSBuild is invoked from the command line.

    This parameter has no equivalent linker option.

  • CLRImageType

    Optional String parameter.

    Sets the type of a common language runtime (CLR) image.

    Specify one of the following values, each of which corresponds to a linker option.

    • Default - <none>

    • ForceIJWImage - /CLRIMAGETYPE:IJW

    • ForcePureILImage - /CLRIMAGETYPE:PURE

    • ForceSafeILImage - /CLRIMAGETYPE:SAFE

    For more information, see /CLRIMAGETYPE (Specify type of CLR image).

  • CLRSupportLastError

    Optional String parameter.

    Preserves the last error code of functions called through the P/Invoke mechanism.

    Specify one of the following values, each of which corresponds to a linker option.

    • Enabled - /CLRSupportLastError

    • Disabled - /CLRSupportLastError:NO

    • SystemDlls - /CLRSupportLastError:SYSTEMDLL

    For more information, see /CLRSUPPORTLASTERROR (Preserve last error code for PInvoke calls).

  • CLRThreadAttribute

    Optional String parameter.

    Explicitly specifies the threading attribute for the entry point of your CLR program.

    Specify one of the following values, each of which corresponds to a linker option.

    • DefaultThreadingAttribute - /CLRTHREADATTRIBUTE:NONE

    • MTAThreadingAttribute - /CLRTHREADATTRIBUTE:MTA

    • STAThreadingAttribute - /CLRTHREADATTRIBUTE:STA

    For more information, see /CLRTHREADATTRIBUTE (Set CLR thread attribute).

  • CLRUnmanagedCodeCheck

    Optional Boolean parameter.

    Specifies whether the linker will apply SuppressUnmanagedCodeSecurityAttribute to linker-generated P/Invoke calls from managed code into native DLLs.

    For more information, see /CLRUNMANAGEDCODECHECK (Add SuppressUnmanagedCodeSecurityAttribute).

  • CreateHotPatchableImage

    Optional String parameter.

    Prepares an image for hot patching.

    Specify one of the following values, which corresponds to a linker option.

    • Enabled - /FUNCTIONPADMIN

    • X86Image - /FUNCTIONPADMIN:5

    • X64Image - /FUNCTIONPADMIN:6

    • ItaniumImage - /FUNCTIONPADMIN:16

    For more information, see /FUNCTIONPADMIN (Create hotpatchable image).

  • DataExecutionPrevention

    Optional Boolean parameter.

    If true, indicates that an executable was tested to be compatible with the Windows Data Execution Prevention feature.

    For more information, see /NXCOMPAT (Compatible with Data Execution Prevention).

  • DelayLoadDLLs

    Optional String[] parameter.

    This parameter causes delayed loading of DLLs. Specify the name of a DLL to delay load.

    For more information, see /DELAYLOAD (Delay load import).

  • DelaySign

    Optional Boolean parameter.

    If true, partially signs an assembly. By default, the value is false.

    For more information, see /DELAYSIGN (Partially sign an assembly).

  • Driver

    Optional String parameter.

    Specify this parameter to build a Windows NT kernel mode driver.

    Specify one of the following values, each of which corresponds to a linker option.

    • NotSet - <none>

    • Driver - /Driver

    • UpOnly - /DRIVER:UPONLY

    • WDM - /DRIVER:WDM

    For more information, see /DRIVER (Windows NT kernel mode driver).

  • EmbedManagedResourceFile

    Optional String[] parameter.

    Embeds a resource file in an assembly. Specify the required resource file name. Optionally specify the logical name, which is used to load the resource, and the PRIVATE option, which indicates in the assembly manifest that the resource file is private.

    For more information, see /ASSEMBLYRESOURCE (Embed a managed resource).

  • EnableCOMDATFolding

    Optional Boolean parameter.

    If true, enables identical COMDAT folding.

    For more information, see the ICF[= iterations] argument of /OPT (Optimizations).

  • EnableUAC

    Optional Boolean parameter.

    If true, specifies that User Account Control (UAC) information is embedded in the program manifest.

    For more information, see /MANIFESTUAC (Embeds UAC information in manifest).

  • EntryPointSymbol

    Optional String parameter.

    Specifies an entry point function as the starting address for an .exe file or DLL. Specify a function name as the parameter value.

    For more information, see /ENTRY (Entry-point symbol).

  • FixedBaseAddress

    Optional Boolean parameter.

    If true, creates a program or DLL that can be loaded only at its preferred base address.

    For more information, see /FIXED (Fixed base address).

  • ForceFileOutput

    Optional String parameter.

    Tells the linker to create a valid .exe file or DLL even if a symbol is referenced but not defined, or is multiply defined.

    Specify one of the following values, each of which corresponds to a command-line option.

    • Enabled - /FORCE

    • MultiplyDefinedSymbolOnly - /FORCE:MULTIPLE

    • UndefinedSymbolOnly - /FORCE:UNRESOLVED

    For more information, see /FORCE (Force file output).

  • ForceSymbolReferences

    Optional String[] parameter.

    This parameter tells the linker to add a specified symbol to the symbol table.

    For more information, see /INCLUDE (Force symbol references).

  • FunctionOrder

    Optional String parameter.

    This parameter optimizes your program by placing the specified packaged functions (COMDATs) into the image in a predetermined order.

    For more information, see /ORDER (Put functions in order).

  • GenerateDebugInformation

    Optional Boolean parameter.

    If true, creates debugging information for the .exe file or DLL.

    For more information, see /DEBUG (Generate debug info).

  • GenerateManifest

    Optional Boolean parameter.

    If true, creates a side-by-side manifest file.

    For more information, see /MANIFEST (Create side-by-side assembly manifest).

  • GenerateMapFile

    Optional Boolean parameter.

    If true, creates a map file. The file name extension of the map file is .map.

    For more information, see /MAP (Generate mapfile).

  • HeapCommitSize

    Optional String parameter.

    Specifies the amount of physical memory on the heap to allocate at a time.

    For more information, see the commit argument in /HEAP (Set heap size). Also, see the HeapReserveSize parameter.

  • HeapReserveSize

    Optional String parameter.

    Specifies the total heap allocation in virtual memory.

    For more information, see the reserve argument in /HEAP (Set heap size). Also, see the HeapCommitSize parameter in this table.

  • IgnoreAllDefaultLibraries

    Optional Boolean parameter.

    If true, tells the linker to remove one or more default libraries from the list of libraries it searches when it resolves external references.

    For more information, see /NODEFAULTLIB (Ignore libraries).

  • IgnoreEmbeddedIDL

    Optional Boolean parameter.

    If true, specifies that any IDL attributes in source code should not be processed into an .idl file.

    For more information, see /IGNOREIDL (Don't process attributes into MIDL).

  • IgnoreImportLibrary

    Optional Boolean parameter.

    If true, specifies that the import library generated by this configuration should not be imported into dependent projects.

    This parameter does not correspond to a linker option.

  • IgnoreSpecificDefaultLibraries

    Optional String[] parameter.

    Specifies one or more names of default libraries to ignore. Separate multiple libraries by using semi-colons.

    For more information, see /NODEFAULTLIB (Ignore libraries).

  • ImageHasSafeExceptionHandlers

    Optional Boolean parameter.

    If true, the linker produces an image only if it can also produce a table of the image's safe exception handlers.

    For more information, see /SAFESEH (Image has safe exception handlers).

  • ImportLibrary

    A user-specified import library name that replaces the default library name.

    For more information, see /IMPLIB (Name import library).

  • KeyContainer

    Optional String parameter.

    Container that contains the key for a signed assembly.

    For more information, see /KEYCONTAINER (Specify a key container to sign an assembly). Also, see the KeyFile parameter in this table.

  • KeyFile

    Optional String parameter.

    Specifies a file that contains the key for a signed assembly.

    For more information, see /KEYFILE (Specify key or key pair to sign an assembly). Also, see the KeyContainer parameter.

  • LargeAddressAware

    Optional Boolean parameter.

    If true, the application can handle addresses larger than 2 gigabytes.

    For more information, see /LARGEADDRESSAWARE (Handle large addresses).

  • LinkDLL

    Optional Boolean parameter.

    If true, builds a DLL as the main output file.

    For more information, see /DLL (Build a DLL).

  • LinkErrorReporting

    Optional String parameter.

    Lets you provide internal compiler error (ICE) information directly to Microsoft.

    Specify one of the following values, each of which corresponds to a command-line option.

    • NoErrorReport - /ERRORREPORT:NONE

    • PromptImmediately - /ERRORREPORT:PROMPT

    • QueueForNextLogin - /ERRORREPORT:QUEUE

    • SendErrorReport - /ERRORREPORT:SEND

    For more information, see /ERRORREPORT (Report internal linker errors).

  • LinkIncremental

    Optional Boolean parameter.

    If true, enables incremental linking.

    For more information, see /INCREMENTAL (Link incrementally).

  • LinkLibraryDependencies

    Optional Boolean parameter.

    If true, specifies that library outputs from project dependencies are automatically linked in.

    This parameter does not correspond to a linker option.

  • LinkStatus

    Optional Boolean parameter.

    If true, specifies that the linker is to display a progress indicator that shows what percentage of the link is complete.

    For more information, see the STATUS argument of /LTCG (Link-time code generation).

  • LinkTimeCodeGeneration

    Optional String parameter.

    Specifies options for profile-guided optimization.

    Specify one of the following values, each of which corresponds to a command-line option.

    • Default - <none>

    • UseLinkTimeCodeGeneration - /LTCG

    • PGInstrument - /LTCG:PGInstrument

    • PGOptimization - /LTCG:PGOptimize

    • PGUpdate

      - /LTCG:PGUpdate

    For more information, see /LTCG (Link-time code generation).

  • ManifestFile

    Optional String parameter.

    Changes the default manifest file name to the specified file name.

    For more information, see /MANIFESTFILE (Name manifest file).

  • MapExports

    Optional Boolean parameter.

    If true, tells the linker to include exported functions in a map file.

    For more information, see the EXPORTS argument of /MAPINFO (Include information in mapfile).

  • MapFileName

    Optional String parameter.

    Changes the default map file name to the specified file name.

  • MergedIDLBaseFileName

    Optional String parameter.

    Specifies the file name and file name extension of the .idl file.

    For more information, see /IDLOUT (Name MIDL output files).

  • MergeSections

    Optional String parameter.

    Combines sections in an image. Specify from-section=to-section.

    For more information, see /MERGE (Combine sections).

  • MidlCommandFile

    Optional String parameter.

    Specify the name of a file that contains MIDL command-line options.

    For more information, see /MIDL (Specify MIDL command line options).

  • MinimumRequiredVersion

    Optional String parameter.

    Specifies the minimum required version of the subsystem. The arguments are decimal numbers in the range 0 through 65535.

  • ModuleDefinitionFile

    Optional String parameter.

    Specifies the name of a module definition file.

    For more information, see /DEF (Specify module-definition file).

  • MSDOSStubFileName

    Optional String parameter.

    Attaches the specified MS-DOS stub program to a Win32 program.

    For more information, see /STUB (MS-DOS stub file name).

  • NoEntryPoint

    Optional Boolean parameter.

    If true, specifies a resource-only DLL.

    For more information, see /NOENTRY (No entry point).

  • ObjectFiles

    Implicit String[] parameter.

    Specifies the object files that are linked.

  • OptimizeReferences

    Optional Boolean parameter.

    If true, eliminates functions and/or data that are never referenced.

    For more information, see the REF argument in /OPT (Optimizations).

  • OutputFile

    Optional String parameter.

    Overrides the default name and location of the program that the linker creates.

    For more information, see /OUT (Output file name).

  • PerUserRedirection

    Optional Boolean parameter.

    If true and Register Output is enabled, forces registry writes to HKEY_CLASSES_ROOT to be redirected to HKEY_CURRENT_USER.

  • PreprocessOutput

    Optional ITaskItem[] parameter.

    Defines an array of preprocessor output items that can be consumed and emitted by tasks.

  • PreventDllBinding

    Optional Boolean parameter.

    If true, indicates to Bind.exe that the linked image should not be bound.

    For more information, see /ALLOWBIND (Prevent DLL binding).

  • Profile

    Optional Boolean parameter.

    If true, produces an output file that can be used with the Performance Tools profiler.

    For more information, see /PROFILE (Performance Tools profiler).

  • ProfileGuidedDatabase

    Optional String parameter.

    Specifies the name of the .pgd file that will be used to hold information about the running program

    For more information, see /PGD (Specify database for profile-guided optimizations).

  • ProgramDatabaseFile

    Optional String parameter.

    Specifies a name for the program database (PDB) that the linker creates.

    For more information, see /PDB (Use program database).

  • RandomizedBaseAddress

    Optional Boolean parameter.

    If true, generates an executable image that can be randomly rebased at load time by using the address space layout randomization (ASLR) feature of Windows.

    For more information, see /DYNAMICBASE (Use address space layout randomization).

  • RegisterOutput

    Optional Boolean parameter.

    If true, registers the primary output of this build.

  • SectionAlignment

    Optional Integer parameter.

    Specifies the alignment of each section within the linear address space of the program. The parameter value is a unit number of bytes and is a power of two.

    For more information, see /ALIGN (Section alignment).

  • SetChecksum

    Optional Boolean parameter.

    If true, sets the checksum in the header of an .exe file.

    For more information, see /RELEASE (Set the checksum).

  • ShowProgress

    Optional String parameter.

    Specifies the verbosity of progress reports for the linking operation.

    Specify one of the following values, each of which corresponds to a command-line option.

    • NotSet - <none>

    • LinkVerbose - /VERBOSE

    • LinkVerboseLib - /VERBOSE:Lib

    • LinkVerboseICF - /VERBOSE:ICF

    • LinkVerboseREF - /VERBOSE:REF

    • LinkVerboseSAFESEH - /VERBOSE:SAFESEH

    • LinkVerboseCLR - /VERBOSE:CLR

    For more information, see /VERBOSE (Print progress messages).

  • Sources

    Required ITaskItem[] parameter.

    Defines an array of MSBuild source file items that can be consumed and emitted by tasks.

  • SpecifySectionAttributes

    Optional String parameter.

    Specifies the attributes of a section. This overrides the attributes that were set when the .obj file for the section was compiled.

    For more information, see /SECTION (Specify section attributes).

  • StackCommitSize

    Optional String parameter.

    Specifies the amount of physical memory in each allocation when additional memory is allocated.

    For more information, see the commit argument of /STACK (Stack allocations).

  • StackReserveSize

    Optional String parameter.

    Specifies the total stack allocation size in virtual memory.

    For more information, see the reserve argument of /STACK (Stack allocations).

  • StripPrivateSymbols

    Optional String parameter.

    Creates a second program database (PDB) file that omits symbols that you do not want to distribute to your customers. Specify the name of the second PDB file.

    For more information, see /PDBSTRIPPED (Strip private symbols).

  • SubSystem

    Optional String parameter.

    Specifies the environment for the executable.

    Specify one of the following values, each of which corresponds to a command-line option.

    • NotSet - <none>

    • Console - /SUBSYSTEM:CONSOLE

    • Windows - /SUBSYSTEM:WINDOWS

    • Native - /SUBSYSTEM:NATIVE

    • EFI Application - /SUBSYSTEM:EFI_APPLICATION

    • EFI Boot Service Driver - /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER

    • EFI ROM - /SUBSYSTEM:EFI_ROM

    • EFI Runtime - /SUBSYSTEM:EFI_RUNTIME_DRIVER

    • WindowsCE - /SUBSYSTEM:WINDOWSCE

    • POSIX - /SUBSYSTEM:POSIX

    For more information, see /SUBSYSTEM (Specify subsystem).

  • SupportNobindOfDelayLoadedDLL

    Optional Boolean parameter.

    If true, tells the linker not to include a bindable Import Address Table (IAT) in the final image.

    For more information, see the NOBIND argument of /DELAY (Delay load import settings).

  • SupportUnloadOfDelayLoadedDLL

    Optional Boolean parameter.

    If true, tells the delay-load helper function to support explicit unloading of the DLL.

    For more information, see the UNLOAD argument of /DELAY (Delay load import settings).

  • SuppressStartupBanner

    Optional Boolean parameter.

    If true, prevents the display of the copyright and version number message when the task starts.

    For more information, see /NOLOGO (Suppress startup banner) (linker).

  • SwapRunFromCD

    Optional Boolean parameter.

    If true, tells the operating system to first copy the linker output to a swap file, and then run the image from there.

    For more information, see the CD argument of /SWAPRUN (Load linker output to swap file). Also, see the SwapRunFromNET parameter.

  • SwapRunFromNET

    Optional Boolean parameter.

    If true, tells the operating system to first copy the linker output to a swap file, and then run the image from there.

    For more information, see the NET argument of /SWAPRUN (Load linker output to swap file). Also, see the SwapRunFromCD parameter in this table.

  • TargetMachine

    Optional String parameter.

    Specifies the target platform for the program or DLL.

    Specify one of the following values, each of which corresponds to a command-line option.

    • NotSet - <none>

    • MachineARM - /MACHINE:ARM

    • MachineEBC - /MACHINE:EBC

    • MachineIA64 - /MACHINE:IA64

    • MachineMIPS - /MACHINE:MIPS

    • MachineMIPS16 - /MACHINE:MIPS16

    • MachineMIPSFPU - /MACHINE:MIPSFPU

    • MachineMIPSFPU16 - /MACHINE:MIPSFPU16

    • MachineSH4 - /MACHINE:SH4

    • MachineTHUMB - /MACHINE:THUMB

    • MachineX64 - /MACHINE:X64

    • MachineX86 - /MACHINE:X86

    For more information, see /MACHINE (Specify target platform).

  • TerminalServerAware

    Optional Boolean parameter.

    If true, sets a flag in the IMAGE_OPTIONAL_HEADER DllCharacteristics field in the program image's optional header. When this flag is set, Terminal Server will not make certain changes to the application.

    For more information, see /TSAWARE (Create Terminal Server aware application).

  • TrackerLogDirectory

    Optional String parameter.

    Specifies the directory of the tracker log.

  • TreatLinkerWarningAsErrors

    Optional Boolean parameter.

    If true, causes no output file to be generated if the linker generates a warning.

    For more information, see /WX (Treat linker warnings as errors).

  • TurnOffAssemblyGeneration

    Optional Boolean parameter.

    If true, creates an image for the current output file without a .NET Framework assembly.

    For more information, see /NOASSEMBLY (Create a MSIL module).

  • TypeLibraryFile

    Optional String parameter.

    Specifies the file name and file name extension of the .tlb file. Specify a file name, or a path and file name.

    For more information, see /TLBOUT (Name .tlb file).

  • TypeLibraryResourceID

    Optional Integer parameter.

    Designates a user-specified value for a linker-created type library. Specify a value from 1 through 65535.

    For more information, see /TLBID (Specify resource ID for TypeLib).

  • UACExecutionLevel

    Optional String parameter.

    Specifies the requested execution level for the application when it is run under with User Account Control.

    Specify one of the following values, each of which corresponds to a command-line option.

    • AsInvoker - level='asInvoker'

    • HighestAvailable - level='highestAvailable'

    • RequireAdministrator - level='requireAdministrator'

    For more information, see the level argument of /MANIFESTUAC (Embeds UAC information in manifest).

  • UACUIAccess

    Optional Boolean parameter.

    If true, the application bypasses user interface protection levels and drives input to higher-permission windows on the desktop; otherwise, false.

    For more information, see the uiAccess argument of /MANIFESTUAC (Embeds UAC information in manifest).

  • UseLibraryDependencyInputs

    Optional Boolean parameter.

    If true, the inputs to the librarian tool are used rather than the library file itself when library outputs of project dependencies are linked in.

  • Version

    Optional String parameter.

    Put a version number in the header of the .exe or .dll file. Specify "major[.minor]". The major and minor arguments are decimal numbers from 0 through 65535.

    For more information, see /VERSION (Version information).

See also