JetBrains.Platform.ReSharper.Shell Maps requests to invocation times List of requests for specific alarm The alarms timer Describes the product. The instances are spawned by the shell and populated with the assembly configuration and product edition parameters. Describes the product. A method of the Universal application descriptor that chooses a runtime configuration for the shell and its non-Universal descriptor based on the command line of the process. A string value of the configuration should be returned, because a strongly-typed cannot be passed across different Application Descriptors (it's bound to an instance). The command line for the current process. Name of the configuration in which the non-Universal descriptor will be created. Gets the UI name of a product edition. Checks whether the given assembly is enabled for the configuration specified. A universal configuration on either end renders True. Parses the string value of the assembly configuration and creates the configuration object. Validates the value against the known configurations list. Parses the string value of the product edition and creates the edition object. Validates the value against the known configurations list. This method is called while Shell initialization if the license's edition does not match to the one stored in the registry The “All Assemblies” XML file, deserialized. Contains the list of product assemblies to be loaded, as well as the configurations filters. Gets the list of assemblies defined by the file, filtered down by the active configuration. Gets the assembly configuration in which the product is running, which defines the set of assemblies from to load. The attribute from which the descriptor has been spawned. A property bag with arbitrary additional properties that bear information about the product. Gets the date and time when the current product was built. Gets the URL that takes to the “Buy Product” page. Gets the assembly that contains the data. Determines whether the product should check for multiple instances running simultaneousely over the network. Gets the URL that takes to the page that provides an eval license. Gets the exception submitter set up for submitting to the project tracker. Gets the licensing implementation. Gets the edition the product is running in. Gets the product full name, which is typically the plus the short version number. Gets the product icon. Gets the bare product name in the shortest form (no company, no version). Gets the URL that takes to the Product page. Gets the product full version. Caches the file, which should be loaded only once. Temporary storage, till we load the All Assemblies XML. The attribute from which the descriptor has been spawned. . Lazy-caches the product edition. Temporary storage, till we load the All Assemblies XML. Constructs the application descriptor, specifying the environment details. Creates an instance based on the construction data that describes the class and ctor arguments. Throws on errors. The declaring attribute that has spawned this descriptor. The name of the assembly configuration. The name of the product edition. Creates an instance based on the construction data that describes the class and ctor arguments. Throws on errors. Creates an instance based on the attributes identifying the descriptor (looked up in ) and spawning it with universal configurations/editions. Such a descriptor is not suitable for runtime use, but suits for picking the static properties. The instance is NOT cached. Throws on errors. Looks up a that instructs on how to spawn an in the specified assemblies. Returns all the assemblies that fit into the assembly configuration config and belong to the group of the given kind (product/platform binaries/references). Loads the file based on the known properties of the assembly and resource. A method of the Universal application descriptor that chooses a runtime configuration for the shell and its non-Universal descriptor based on the command line of the process. A string value of the configuration should be returned, because a strongly-typed cannot be passed across different Application Descriptors (it's bound to an instance). The command line for the current process. Name of the configuration in which the non-Universal descriptor will be created. Gets the UI name of a product edition. Checks whether the given assembly is enabled for the configuration specified. A universal configuration on either end renders True. Parses the string value of the assembly configuration and creates the configuration object. Validates the value against the known configurations list. Parses the string value of the product edition and creates the edition object. Validates the value against the known configurations list. The “All Assemblies” XML file, deserialized. Contains the list of product assemblies to be loaded, as well as the configurations filters. Gets the list of assemblies defined by the file, filtered down by the active configuration. Gets the assembly configuration in which the product is running, which defines the set of assemblies from to load. The attribute from which the descriptor has been spawned. A property bag with arbitrary additional properties that bear information about the product. Gets the date and time when the current product was built. By default, returns the assembly file modification time of the configuration assembly. See . Gets the URL that takes to the “Buy Product” page. Gets the assembly that contains the data. Determines whether the product should check for multiple instances running simultaneousely over the network. Gets the URL that takes to the page that provides an eval license. Gets the exception submitter set up for submitting to the project tracker. Gets the licensing implementation. Gets the edition the product is running in. Gets the product full name, which is typically the plus the short version number. Gets the product icon. Gets the bare product name in the shortest form (no company, no version). Gets the product full version. By default, returns the assembly version of the configuration assembly. See . Kind of s. The one and only parameter for the application descriptor constructor. Temporary storage, till we load the All Assemblies XML. The attribute from which the descriptor has been spawned. Temporary storage, till we load the All Assemblies XML. Encapsulates the data that constructs the application descriptor. The declaring attribute that has spawned this descriptor. The name of the assembly configuration. The name of the product edition. Temporary storage, till we load the All Assemblies XML. The attribute from which the descriptor has been spawned. Temporary storage, till we load the All Assemblies XML. Implements most of the members and leaves only the most crucial ones for the author. Not recommended for use in full-blown products. Inits the descriptor, assigning values to the minimum of the parameters. A method of the Universal application descriptor that chooses a runtime configuration for the shell and its non-Universal descriptor based on the command line of the process. A string value of the configuration should be returned, because a strongly-typed cannot be passed across different Application Descriptors (it's bound to an instance). The command line for the current process. Name of the configuration in which the non-Universal descriptor will be created. Gets the UI name of a product edition. Gets the URL that takes to the “Buy Product” page. Determines whether the product should check for multiple instances running simultaneousely over the network. Gets the URL that takes to the page that provides an eval license. Gets the exception submitter set up for submitting to the project tracker. Gets the licensing implementation. Gets the product full name, which is typically the plus the short version number. Gets the product icon. Validates the list of assembly configurations. Describes a single known value form the file. The string value of the item is checked to be valid against the predefined values list. . . Validates the string value and wraps it into the configuration. . . Checks whether the is indeed known to the all-assemblies-xml file. Gets the collection of the known values, for validation. Returns a that represents the current . A that represents the current . 2 Checks whether this value is equal to another value whose string value is passed in as a parameter. You should use this method rather than comparing the to a string, because this method would validate the against the known values list. true if the current object is equal to the other parameter; otherwise, false. String value to compare with, is validated against the known values list. Gets the string value of the universal known value. Gets the file that defines and owns the configuration. The configuration validness is checked against the file. Gets whether this configuration is the Universal configuration, ie includes all of the assemblies regardless of their configurations. Gets whether the universal value (string value ) is available on this set of items. Gets the string value of the configuration, as written in the file. Gets the collection of the known values, for validation. Gets whether the universal value (string value ) is available on this set of items. Defines a product by the means of its ID and the type that should be instantiated so that to serve as its . To provide for loading more than one product into the appdomain, the search for attributes is constrained to the startup assembly. In case of a Visual Studio Add-In, the startup assembly is that one containing the Add-In. Lazy-init-caches the . Lazy-init-caches the . Name of the XML embedded resource in the -identified assembly from which the “AllAssembliesXml” data should be loaded. Gets the date and time when the current product was built. By default, returns the assembly file modification time of the configuration assembly. Any type from the assembly that contains main configuration data, such as the “AllAssembliesXml” file, and defines the product build date and version. Gets the class that should be instantiated as the application descriptor, see . The class must have a public “.ctor()”. Gets the short (ID-like) name of the product. Gets the product full version. Returns the assembly version of the derived type's assembly. Validates the list of product editions. Checks whether at least one of the editions in the list are supported by the current product. Requires the running . The product edition is supposed to contain any valid edition. Each of the given edition Gets the collection of the known values, for validation. Gets whether the universal value (string value ) is available on this set of items. Controls execution of the assembly-load-time-handlers in various assemblies of the product. Assemblies for which the assembly loaders have already been executed. The Shell that knows the AllAssemblies list, and such. Creates the descriptors for the already-loaded assemblies (eg plugins') and executes load handlers for 'em. Executes the load handlers for the given assemblies. Ensures none are processed twice. Builds a map of assembly attributes on types to the types they're defined on. Checks that no references are missing, early-detects any other metadata problems. Loads each assembly from the file (filtered by config). Looks up types with attributes, builds an index of those. Doesn't save the index, just returns its data in the descriptors. The collection of type loading handlers that you can populate with your own ones. They will receive notifications about types in the existing and newly-loaded assemblies that fit the criterion. References an assembly as well as some additional data about it. Maintains a hot-list of types having specific attributes. Stores the assembly data, as fetched from the AllAssemblies.xml file. Gets the name of the assembly, as listed in the AllAssemblies.xml. Gets the list of the types that should not be processed when loading the assembly. todo[dsha,dsl,valentin]: better ideas? This method is motivited by DocumentManager acting as a multicaster for all project documents. Enumerator of providers that were changed Represents arguments of change event Executes the specified action after the current change has finished or immediately if there is no change currently in progress Registers change provider in the dispatching scheme Unregisters change provider from the dispatching scheme Remove all dependencies in which the provider participates Initiates the event dispatching process using the specified provider as a starting point Adds dependency between two providers. Both providers must have already been registered Removes dependency between two providers. Both providers must have already been registered Dumps the internal structure into the specified writer The event about changes in the system Represents an abstract change unit. Defines set of file names that match the specified regular expression Array of defined keys: “/Key[=Value]”. Strings that do not start with “/” and belong to the previous string with a “/”. Array of defined keys: /Key[=Value] Strings, that does not start with '/'. Defines a command-line switch that will be known to the shell and registered with the hosting app, as needed. Defines a command-line switch that will be known to the shell and registered with the hosting app, as needed. The name of the command line switch, without the prefix. The number of parameters of the command line switch. Gets the name of the command line switch, without the prefix. Gets the number of parameters of the command line switch. Command processor that performs undoable actions These calls should not be nested The global platform shell-level settings. Settings manager. Gets a setting by its strongly-typed key. Type of the setting. Must exactly match the expected setting value type. The strongly-typed key for the setting. The setting value, if available. Keys to the global settings. Whether to display the memory usage indicator in the status bar. Whether to wrap the selection around the list ends. Interval of time, in milliseconds, for which the text input changes are deferred before they are committed. Helps to process considerable amounts of user input, rather than react to each keystroke. Whether a single item in the lists should be executed immediately. Whether to fix the mouse wheel behavior so that it were directed to the hovered window, not the active one. Are we allowed to submit user activity logs for internal processing Contains global settings of objects that do not have components to store settings in A component that supports XML serialization of its settings. Base interface for abstract component Gets the scope that defines which store the data goes into. Must not be Null. Gets the Tag Name of the XML Element in the settings file. Gets the boolean properties. Gets the integer properties. Gets the string properties. Scope that defines which store the data goes into. Must not be 0. Represent the properties collection. Adds an item to the . The object to add to the . The is read-only. Removes all items from the . The is read-only. Determines whether the contains a specific value. true if item is found in the ; otherwise, false. The object to locate in the . Copies the elements of the to an , starting at a particular index. The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. The zero-based index in array at which copying begins. arrayIndex is less than 0. array is null. array is multidimensional.-or-arrayIndex is equal to or greater than the length of array.-or-The number of elements in the source is greater than the available space from arrayIndex to the end of the destination array.-or-Type T cannot be cast automatically to the type of the destination array. Returns an enumerator that iterates through a collection. An object that can be used to iterate through the collection. 2 Removes the first occurrence of a specific object from the . true if item was successfully removed from the ; otherwise, false. This method also returns false if item is not found in the original . The object to remove from the . The is read-only. Returns an enumerator that iterates through the collection. A that can be used to iterate through the collection. 1 Returns an enumerator that iterates through the collection. A that can be used to iterate through the collection. 1 Gets a property by its name. Creates a new one if missing. Gets a property by its name. Creates a new one if missing. The second parameter is the default value for the case the property does not yet exist. Gets the number of elements contained in the . The number of elements contained in the . Gets a value indicating whether the is read-only. true if the is read-only; otherwise, false. Base interface for all global components Contains global settings of objects that do not have components to store settings in A class marked with must implement this interface in order to be called for processing each of the assembly attributes it handles. Called for each of the attributes of the requested type encountered in the known assemblies. The installer object that provides the installation data. Instance of the attribute to process. The list of the Registry entries to write, or Null if none. Called once on the object during the registration process. The installer object that provides the installation data. The list of the Registry entries to write, or Null if none. An attribute to mark the classes that process the installation data written in the form of assembly attributes of type during registration and unregistration. Such classes will also be called once to perform their own attribute-independent installation. The class must implement the interface. Creates the attribute. The installer is not attached to any particular attributes, but only executes the one-time action. Specifies the affinity of this installer to the VS version, see enum member summaries for details. Creates the attribute. Type of the attribute for which the class marked by should be invoked to process the installation. May be Null if the class wants to execute its own installation only. Specifies the affinity of this installer to the VS version, see enum member summaries for details. Gets the type of the attribute for which the class marked by should be invoked to process the installation. Specifies whether this installation is interested in the VS version, and how. Invokes installation/uninstallation related services. This class should not be made static (and, conscequently, public interface methods on it), so that it were created and disposed accordingly, with its underlying . Helps with finding the assemblies residing at custom probing paths. Maps the attributes storing the installation data to the objects that process their registration and unregistration. Don't use, see . Maps the attribute-installer types to the created instances of their objects. Don't use, see . The product descriptor that provides the essential data on the product being installed or uninstalled. A constructor for spawning the installer on an application descriptor that is defined in an attribute. Dupms the given Registry data into a file. Self-registers for COM those assemblies that require such registration. Gets all the Registry data that should be written to or erased from the Registry upon installation or uninstallation. This includes the static app-global Registry data and dynamic registration info collected from the Assembly attributes. Collects the handlers that implement installation against the assembly attributes, see . Do not call, use . Invokes the registration handlers for assembly attributes, see , from the assemblies listed in the AllAssemblies.xml. Collects the one-time global registration data from the attribute installers, one that is not per-attribute or per-assembly. Invoked from , don't call manually. Throws if . Clean up any resources being used. Gets the product descriptor that provides the essential data on the product being installed or uninstalled. Maps the attribute-installer types to the created instances of their objects. Gets or sets the resolver that allows to get a physical file system path for the given source file system directory root. Gets the VS Hive that is the VS Version + VS RootSuffix. Examples: “8.0”, “8.0ReSharper”. The installation data is bound to a specific hive. Gets the VS Root Suffix, eg the main one (an empty string) or the experimental one (eg “ReSharper”). The installation data is bound to a specific hive. Gets the version of the Visual Studio. Example: “8.0”. If the installer is running in the VS-version-neutral mode, throws an exception. Maps the attributes storing the installation data to the objects that process their registration and unregistration. Performs local-system installations, hence “Live”. Performs the local installation of the given installation data by writing the Registry keys and copying the files. The installation data. Stage, either install or uninstall. The logging facility. Resolves the source directory, for copying the files from. Resolves the target directory, for copying the files into. The maros to be substituted on install, if needed. Gets the proper Windows Registry root key. Copies or deletes the files. Executes the registration/unregistration operations on the Registry keys. The Registry to process. Processing type. The macros to substitute when processing the keys. Writes the key to the Registry. Writes the value to the Registry. Deletes the key from the Registry. Deletes the value from the Registry. Defines the exact stage of the registration process of which the handler is being queried. The assembly is being registered. The assembly is being unregistered. A class for performing actions on the main UI thread This method should be called on the main thread Queues an action for invocation in the UI thread in the current modality state. This means that if a new modal window will open, the action won't execute until it closes, but if some windows are closed, or in the current state, it will. A message-only form that is not visible on the screen. Maintains a table of the pre-registered setting identities that are validated as much as possible. The settings can be accessed thru a strongly-typed key, with their type and default value consistent across all the calls. The settings are still stored in the . The list of the known settings. Creates an empty table to be filled with afterwards. is not called, it's up to you. Creates an initialized table, uses to check that there are no orphaned keys in the enum. Checks whether we support settings of the type . Checks that all the keys from the enum are present in the table. Gets a setting by its strongly-typed key. Type of the setting. Must exactly match the expected setting value type. The strongly-typed key for the setting. The setting value, if available. Adds a new known setting. Adds a new known setting. Adds a new known setting. Describes a known setting with its type and default value. Default value, must be of type . The key in the known settings table. The settings-key in the underlying settings store. Validates and fills in. Validates and fills in. The settings key name is deferred from the key value. Throws if fields are invalid. Creates license data using licenseKey, userName and company name. If only one type of licenses is acceptable, normally returns new LicenseData(...). Otherwise some additional processing should take place License agreement in rich text. NULL if no license agreement is necessary Guid (with braces), that is used to store Date marker Number of days, free trial period lasts Number of free trial days, after which feedback is requested. Negative value means feedback is never requested. Identifies, when to start informing user that, his free trial period ends up JetBrains license server supports ProductFamily as guid without braces !!! does stored checksum corresponds to the username's one? checksum occupies 16 bits gets OmniaMea version stored in the license code occupies 16 bits gets type of the license stored in the license code occupies 8 bits gets license generation date stored in the license code occupies 16 bits gets license expiration date stored in the license code occupies 16 bits Checks if the one-time-init is needed. Optionally, marks it as done in the Registry (write-touches Current User hive only). Whether to mark one-time-init as performed for this config. Whether one-time-init was required. Invoked when one-time-init fails to read/write the Regsitry. Should report to the user in an app-dependent manner. If the per-machine one-time-init value is not available, this value is used instead. Gets whether the one-time-init is allowed to run at the moment, eg the main window has already been created. To use this feature implement with default constructor. This class is not expected to be . Initialization will be performed in UIThread on IVsShellComponent.OnAfterStartup() call time. Loads a map from assembly name to a map for attribute fqn to type fqn Override this method with activity that should happen in primary thread before background thread Override this method with activity that happens in background thread. This method should periodically check return value of d and either return or throw ProcessCancelledException This method will always be invoked at the end of worker thread Override this method with activity that will happen in primary thread after worker thread finishesю This method is invoked in primary thread if work is interrupted. If this method is invoked, Finish will NOT be called. Renders current state of Console progress Task executor for progress in console Interface which represents root point for environment API. Use the property to obtain the Shell instance. A component container with XML serialization capabilities for the component settings. Base class for component containers. Provides storage for components and initialization services Base interface for abstract component container Gets the component whose interface type is . Throws if there is no such component. Gets the component whose interface type is . Throws if there is no such component. Returns all of the component implementations, arranged in a stable order. Returns all of the component implementations that are assignable to the type, arranged in a stable order. Gets the component whose interface type is . Returns Null if there is no such component. Gets the component whose interface type is . Returns Null if there is no such component. This interface follows the COM pattern for sinking the events, ie by implementing an interface. Mimics the event, but with a simpler and strongly-typed interface for our cases. Mimics the in some way, but supports grouping modifications together (for mass-changes), which is important for our sinks. The sink sees new items in the collection view. The sink sees some items going away from the collection view. Name of the Configuration element in the XML config files. Used to shortcut . Monitors component types coming and going. Assigned in , released in . Note: must not be disposed of, it's reusable! The first free slot for adding to . Maps a component instance to its initialization sequence number (this is intentionally non per-Type). Counted by exit from . Could be used to dispose of the components: when disposed of in reverse init-exit order, it's guaranteed that the set of components not disposed of yet will be no smaller than what was accessible to the component in its init. Marks the container's thread affinity. Allows to validate components in the container. Throwing an exception will prevent the component from being loaded. // TODO(H): Check If the error is non-fatal, report it with 's assertion methods. Initializes the components in the container. Caches component types list among the instances of component containers. This should not be done for shells, as their assembly sets and configs may vary. This should be done for solutions and projects within the lifetime of the shell, so that to speed up their creation. Just calls the component's . Part of the shutdown. Initializes the component by calling its Init method. Might be reentered if component's Init triggers an Init of some other component. Tells whether the component's has been called, and has been not. Filters out components not supported in the current runtime environment. Override in derived classes to provide the filtering. Called to create a new component from its declaration, typically when the container is inited or new assemblies are loaded. Does not do . Called to destroy a component previously created from this declaration, typically when the container is torn down or some assemblies are “unloaded”. Does not call on the component, this must be done by the caller. Stores a new instance in the container. Component interface type, might be missing. Component implementation, identifies the component impl type. The sink sees new items in the collection view. The sink sees some items going away from the collection view. Returns all of the component implementations, arranged in a stable order. Returns all of the component implementations that are assignable to the type, arranged in a stable order. Gets the component whose interface type is . Returns Null if there is no such component. Gets the component whose interface type is . Returns Null if there is no such component. An argument to the component constructor. The component container itself, by default. A component container with XML serialization capabilities for the component settings. An interface for a component that has some settings and they should be saved whenever all of the application settings are being saved. // TODO: rework when we have a mature settings model. Tells the component container to reload the settings from the persistent media, deserialize them from the bag, and apply them to the components. If a particular component has not been initialized yet, it will be called for / before its . Otherwise, those xml-related methods will be called on it for the second and so on time. Tells the component container that it's about time to query the components of their settings, serialize them to the bag, and write that to the persistent media. You must make sure this method is called on component containers in the end of the session. The component container will never save settings on its own. Maps the 's and into the that hold its settings. This stores the settings after they're read from the storage and before they're loaded by the components, and before they're written back to the storage. Whenever an older version of the settings file is found to be upgraded, set to the version of the product that supposedly produced that file. Otherwise, Null, which means that the upgrade should not be called. A dummy XML document for creating XML elements for component settings. When settings are deserialized, set to their XML document. It's not important which XmlDoc to use, we'd just like to minimize their number. For an XML-configurable component, loads its config and applies to the component. Applies the related settings currently in the XML Bag to the 's or . This implements the full settings-reading protocol for the component. Executed either before component init or in case of . Requests settings from the component and stores them into the XML Bag so that it could be then serialized. Invoked by the base implementation when it's time to load the XML Settings Bag from the permanent storage. Typically, in that's called from . This logic (like, choosing the file) must be implemented by the inheritor. The inheritor might look for legacy settings files from previous versions if the normal settings file is missing and set to use them with components. Call to submit the XML representation of the settings for a particular scope (see for details). Invoked by the base implementation when it's time to save the XML Settings Bag to the permanent storage. Typically, in response to after the components are serialized into the bag. This logic (like, choosing the file) must be implemented by the inheritor. Call to get the settings for a particular scope in XML representation (see for details). When the settings are being read from the XML settings files, sets the mark whether the Upgrade functionality should be called on the components when they're initialized with their settings in . There were no upgrade, but there's a valid settings element, and it will be applied. If in upgrade mode, see for upgrade data for this component. Reads from an XML document and stores into the XML Bag. Collects the entries for the map from the . The scope is given by , and the name comes from the XML tag names. Reads component settings for all of the components from the XML Settings bag. Note: the component container does this automatically before it initializes the component. Writes the component settings to the XML Document. Target. The scope to filter the components against, or 0 to include them all. Whether anything were written. This could be used to avoid creating empty proj/sol settings files. Writes component settings for all of the components into the XML Settings bag. Note: the component container does this automatically on . Initializes the components in the container. Caches component types list among the instances of component containers. This should not be done for shells, as their assembly sets and configs may vary. This should be done for solutions and projects within the lifetime of the shell, so that to speed up their creation. Overrides the base init-component to perform XML-related ops. Tells the component container to reload the settings from the persistent media, deserialize them from the bag, and apply them to the components. If a particular component has not been initialized yet, it will be called for / before its . Otherwise, those xml-related methods will be called on it for the second and so on time. Tells the component container that it's about time to query the components of their settings, serialize them to the bag, and write that to the persistent media. Override this property to provide a list of scopes that are valid for components in this container. Shuts the shell down. Gets the plaintext description that identifies the current build. Gets the directory in which the product assemblies are located. You should use from the Registry in most cases. Reads the product install dir from the Registry. Falls back to if not available. Gets the invocator that executes arbitrary actions on the application's primary thread in a reentrant-safe manner. Indicates that the current shell is running in the internal mode, so some extra functionality is available Indicates that the current shell is a unit-test shell Exposes the Read/Write Lock API. Gets the dispatcher attached to the UI thread. Can be used for marshalling or async queueing of the tasks. Gets the path to the product's Registry key. Gets the full path to the computer-local per-user folder that stores the product settings. This folder should be used for storing large or easily-re-generated files, like type index caches. Gets the full path to the network-roaming per-user folder that stores the product settings. This folder should be used for storing small and non-re-generatable files only. Gets the list of legacy user-settings dirs (coming from previous product version), actually found on the local system, sorted in descending priority order. The second part of the tuple is the product version of the legacy settings file. Some base implementations for the very-abstract class. Registry prefix before the . . Specifies the dispatcher on the UI thread. Can be used for marshalling or async queueing of the tasks. Caches . Caches . Caches . Gets the suffix that forms the , , and . The template must not include location-specific parts (ie “Software” for registry or “AppData” for folder), as they should be concatenated by consumers. There should be no leading or trailing slashes. Note: NOT SUITABLE for calling in VS-BASED PRODUCTS. Initializes the Shell components. Backend for “UserSettings…” funcs. Prevents reentrancy when a lock is taken (temporary). Asserts that any primary-thread lock is guarded by . Specifies the component container cache, sealed as the override is parameterless from now on. Gets the plaintext description that identifies the current build. Gets the directory in which the product assemblies are located. You should use from the Registry in most cases. Reads the product install dir from the Registry. Falls back to if not available. Gets the invocator that executes arbitrary actions on the application's primary thread in a reentrant-safe manner. Exposes the Read/Write Lock API. Gets the dispatcher attached to the UI thread. Can be used for marshalling or async queueing of the tasks. Gets the path to the product's Registry key. Gets the full path to the computer-local per-user folder that stores the product settings. This folder should be used for storing large or easily-re-generated files, like type index caches. Gets the full path to the network-roaming per-user folder that stores the product settings. This folder should be used for storing small and non-re-generatable files only. Gets the list of legacy user-settings dirs (coming from previous product version), actually found on the local system, sorted in descending priority order. The second part of the tuple is the product version of the legacy settings file. Throws all of the logged exceptions collected by silent and family methods. Whether to perform a full CG so that to collect the errors from hanging finalizers. Component interfaces and implementations should be marked with an attribute that is inherited from this type. Denotes a component ignorant of the . Its presence is conrtolled by the and the set of assemblies selected for the product instead. This is the preferred method for controlling the component set. Fallback to the only if you cannot express the configuration by manipulating the assembly set. Scope that defines which store the data goes into. Must not be 0. The test shell implementation to be created by the tests that need a shell. The shell should be reused throughout the tests that: • Are defined in the same assembly. • Share the same AllAssemblies.Xml. • Share the same configuration assembly. The assembly with tests for which the test shell has been created. Shell should be re-created for each new assembly with tests. Ensures the Reentrancy Guard is empty after executing the test. Gets a base path for test solution projects. Cleans up the path before use. Allows temporarily posting messages on this thread, for async or multi-thread tests. Runs the test code under the . Throws all of the logged exceptions collected by silent and family methods. Whether to perform a full CG so that to collect the errors from hanging finalizers. Checks whether the test shell instance can be reused by the test with the given parameters. Gets the shell instance, casted to the type. Loads and validates the All Assemblies schema. Gets the XSD for the AllAssemblies.xml. Gets the XSD for the GuidCache.xml.