Microsoft.Build.Experimental.ProjectCache Namespace

Classes

CacheContext

Holds various information about the current msbuild execution that the cache might use. The cache may need to know about the top level projects or the entire project graph, so MSBuild provides a graph when one is available. When it isn't available, MSBuild provides the top level projects and the plugin can construct its own graph based on those. So either Graphis null, or GraphEntryPoints is null. But not both.

CacheResult

Represents the cache result a plugin returns back to MSBuild when queried about a certain project. Results representing cache hits (with ResultType == CacheHit) contain information about what BuildResult MSBuild should use for the queried project. It is assumed that all cache hits result in a successful BuildResult.

PluginLoggerBase

Events logged with this logger will get pushed into MSBuild's logging infrastructure.

ProjectCacheDescriptor
ProjectCacheException

This exception is used to wrap an unhandled exception from a project cache plugin. This exception aborts the build, and it can only be thrown by the MSBuild engine.

ProjectCachePluginBase

Only one plugin instance can exist for a given BuildManager BeginBuild / EndBuild session. Any exceptions thrown by the plugin will cause MSBuild to fail the build.

ProxyTargets

A cache hit can use this to instruct MSBuild to build the cheaper version of the targets that the plugin avoided running. For example, GetTargetPath is the cheaper version of Build.

MSBuild will build the proxy targets and assign their target results to the real targets the mapping points to. The proxy targets are left in the build result (i.e., both GetTargetPath and Build will appear in the build result). Real targets can be committed in which case msbuild only keeps the proxy target in the build result.

Structs

PluginTargetResult

A cache hit can use this to instruct MSBuild to construct a BuildResult with the target result specified in this type.

Enums

CacheResultType

Result types that a plugin can return for a given build request.