ILSpy Command Line Arguments

Command line arguments can be either options or file names.
If an argument is a file name, the file will be opened as assembly and added to the current assembly list.

Available options:
    /singleInstance    If ILSpy is already running, activates the existing instance
                       and passes command line arguments to that instance.
                       This is the default value if /list is not used.
    
    /separate          Start up a separate ILSpy instance even if it is already running.
    
    /noActivate        Do not activate the existing ILSpy instance. This option has no effect
                       if a new ILSpy instance is being started.
    
    /list:listname     Specifies the name of the assembly list that is loaded initially.
                       When this option is not specified, ILSpy loads the previously opened list.
                       Specify "/list" (without value) to open the default list.
                       
                       When this option is used, ILSpy will activate an existing instance
                       only if it uses the same list as specified.
                       
                       [Note: Assembly Lists are not yet implemented]
    
    /clearList         Clears the assembly list before loading the specified assemblies.
                       [Note: Assembly Lists are not yet implemented]
    
    /navigateTo:tag    Navigates to the member specified by the given ID string.
                       The member is searched for only in the assemblies specified on the command line.
                       Example: 'ILSpy ILSpy.exe /navigateTo:T:ICSharpCode.ILSpy.CommandLineArguments'
                       
                       The syntax of ID strings is described in appendix A of the C# language specification.
    
    /language:name     Selects the specified language.
                       Example: 'ILSpy /language:C#' or 'ILSpy /language:IL'

WM_COPYDATA (SendMessage API):
    ILSpy can be controlled by other programs that send a WM_COPYDATA message to its main window.
    The message data must be an Unicode (UTF-16) string starting with "ILSpy:\r\n".
    All lines except the first ("ILSpy:") in that string are handled as command-line arguments.
    There must be exactly one argument per line.
    
    That is, by sending this message:
        ILSpy:
        C:\Assembly.dll
        /navigateTo:T:Type
    The target ILSpy instance will open C:\Assembly.dll and navigate to the specified type.
    
    ILSpy will return TRUE (1) if it handles the message, and FALSE (0) otherwise.
    The /separate option will be ignored; WM_COPYDATA will never start up a new instance.
    The /noActivate option has no effect, sending WM_COPYDATA will never activate the window.
    Instead, the calling process should use SetForegroundWindow().
    If you use /list with WM_COPYDATA, you need to specify /singleInstance as well, otherwise
    ILSpy will not handle the message if it has opened a different assembly list.