What's the story with installing ""MSBuild"" assemblies into the GAC?


""Pre Beta 1""

""The story is this. Pre Beta 1, the MSBuild assemblies were not installed into the GAC. The reasons for this were numerous, but the main reason had to do with the fear of applications taking a dependency on MSBuild assemblies, and the MSBuild team not being prepared to lock down the API to ensure backwards compatibility for all applications moving forward.""

""Furthermore, when using Pre Beta 1, customers should not attempt to manually place the MSBuild assemblies into the GAC. This will almost certainly result in problems since the code relies on the location of Microsoft.Build.Engine.dll for many things, including deciding how to evaluate $(MSBuildBinPath). If you manually GAC the MSBuild assemblies, then the Fusion loader will start picking them up from the GAC, and MSBuild will issue failures when it discovers that certain other files (Microsoft.BuildTasks, CSharp.targets, Framework.targets, etc.) cannot be found in the same directory as that from which Microsoft.Build.Engine.dll was loaded.""

Beta 1 and Beyond

""Not having MSBuild assemblies in the GAC caused numerous problems, particularly for IDE scenarios. So starting with the Beta 1 release, the following MSBuild assemblies are installed to the GAC as part of the installation of the .NET Framework redist:""
* Microsoft.Build.Engine.dll
* Microsoft.Build.Framework.dll
* Microsoft.Build.Utilities.dll
* Microsoft.Build.Tasks.dll

""In conjunction with this, we changed the way $(MSBuildBinPath) is computed so that the host of MSBuild (e.g., msbuild.exe, Visual Studio, etc.) is responsible for "telling" MSBuild how to evaluate this property."" See MsbuildbinpathInTheCommandLine and MsbuildbinpathInTheIde for more details.
Microsoft Communities