Add support for ToolsVersion and correctly build msbuild+xbuild assemblies
authorAnkit Jain <radical@corewars.org>
Tue, 6 Apr 2010 09:57:58 +0000 (09:57 -0000)
committerAnkit Jain <radical@corewars.org>
Tue, 6 Apr 2010 09:57:58 +0000 (09:57 -0000)
commit4427a6008078a25c50102da747cd2319cfd6192a
treea5e3951db03207c703cbc15ea74da704dceb6ca8
parentb5aa5ab8075b8d4344165221fe508e17b8cdd2c0
parentad6c7601f564a21db5536e8dc95456248bb717b7
Add support for ToolsVersion and correctly build msbuild+xbuild assemblies
for 3.5 and 4.0 profiles.

2010-04-03  Ankit Jain  <jankit@novell.com>

* Makefile: Process tools/xbuild for 3.5 also.

In class/Microsoft.Build.Engine:
2010-04-03  Ankit Jain  <jankit@novell.com>

* Makefile: Use the correct assembly name for MS.Build.Utilities*
for 3.5 and 4.0 profiles. Copy the .config files for the test
assembly.
Import tools/xbuild/xbuild_targets.make, which copies the target
and tasks file in the correct place, to allow running tests
with different toolsversion.
* Microsoft.Build.Engine.dll.sources: Add LogExtensions.cs,
Toolset.cs, ToolsetDefinitionLocations.cs and ToolsetCollection.cs .
* Test/test-config-file-net-3.5: New.
* Test/test-config-file-net-4.0: New.

In class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine:
2010-04-03  Ankit Jain  <jankit@novell.com>

* BuildEngine.cs: Implement IBuildEngine2 instead of
IBuildEngine.
* BuildTasks.cs: Use the new extension methods for logging.
(InitializeTask): Emit a message informing about the assembly
from which the task is being loaded. Emit a useful debug message
incase of a InvalidCastException.
* Engine.cs: Add missing methods, constructors and properties related
to ToolsVersion support. Setup a default set of Toolsets.
Keep separate taskdbs' per ToolsVersion. The common tasks
would come from different *.tasks file, and use different
task assemblies.
(DefaultToolsVersion): Correctly set this based on the profile.
* LogExtensions.cs: New. Extension methods on Engine, for logging.
* Project.cs: Add missing methods/contructors/properties related
to ToolsVersion support. Add reserved properties -
MSBuildToolsPath and MSBuildToolsVersion .
* Toolset.cs: New.
* ToolsetCollection.cs: New.
* ToolsetDefinitionLocations.cs: New.

In class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine:
2010-04-06  Ankit Jain  <jankit@novell.com>

* Consts.cs (ToolsVersionString): New.
(GetTasksAsmPath): New.
* EngineTest.cs: Use the direct path to the tasks assembly
in the UsingTasks.
* ProjectTest.cs: Set ToolsVersion to the current profile.

In class/Microsoft.Build.Framework:
2010-04-03  Ankit Jain  <jankit@novell.com>

* Makefile: Import tools/xbuild/xbuild_targets.make, which copies
the target and tasks file in the correct place, to allow running
tests with different toolsversion.
* Microsoft.Build.Framework.dll.sources: Add IBuildEngine2.cs .

In class/Microsoft.Build.Framework/Microsoft.Build.Framework:
2010-04-03  Ankit Jain  <jankit@novell.com>

* IBuildEngine2.cs: New.

In class/Microsoft.Build.Tasks:
2010-04-03  Ankit Jain  <jankit@novell.com>

* Makefile: Import tools/xbuild/xbuild_targets.make, which copies
the target and tasks file in the correct place, to allow running
tests with different toolsversion. Copy the config file for the
test assembly. Clean the generated test.dll .
Use the correct target assembly name for 4.0 profile
(ms.build.tasks.v4.0.dll), and for Utilities assembly.
* Microsoft.Build.Tasks_test.dll.sources: Use Consts.cs from Engine
instead of maintaining a copy here.

In class/Microsoft.Build.Tasks/Microsoft.Build.Tasks:
2010-04-03  Ankit Jain  <jankit@novell.com>

* Csc.cs: Use dmcs as the compiler for 4.0 profile.
* MSBuild.cs (ToolsVersion): New.
Use toolsVersion for building.

In class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks:
2010-04-06  Ankit Jain  <jankit@novell.com>

* Consts.cs: Remove.
* AssignProjectConfigurationTest.cs:
* CreateCSharpManifestResourceNameTest.cs:
* CreateVisualBasicManifestResourceNameTest.cs:
* CreateItemTest.cs:
* FindAppConfigFileTest.cs:
* RemoveDuplicatesTest.cs:
* TaskBatchingTest.cs:
* WriteLinesToFileTest.cs:
Set the ToolsVersion to match the profile. Use the
full path to the tasks assembly for UsingTasks.

In class/Microsoft.Build.Utilities:
2010-04-03  Ankit Jain  <jankit@novell.com>

* Makefile: Import tools/xbuild/xbuild_targets.make, which copies
the target and tasks file in the correct place, to allow running
tests with different toolsversion.
Use the correct target assembly name for 4.0 profile.

In class/Microsoft.Build.Utilities/Microsoft.Build.Utilities:
2010-04-03  Ankit Jain  <jankit@novell.com>

* TargetDotNetFrameworkVersion.cs: Add Version40 .
* Task.cs (BuildEngine2): New.
* ToolLocationHelper.cs: Use class/linet_* as the path
for the assemblies and targets when running tests.
Environment variable TESTING_MONO is set for testing.
This allows a 4.0 xbuild to build 2.0/3.5 projects.

In tools:
2010-04-03  Ankit Jain  <jankit@novell.com>

* Makefile: Move xbuild from net_4_0_dirs to per_profile_dirs.

In tools/xbuild:
2010-04-03  Ankit Jain  <jankit@novell.com>

* Main.cs (Execute): If toolsversion is specified on the command line,
then use that.
* Parameters.cs: Read toolsversion from the command line ('/tv:..') .
* SolutionParser.cs: Infer ToolsVersion from the sln version.
Set ToolsVersion property of the MSBuild tasks, in the generated
.sln.proj file, for building the projects.

* xbuild/Microsoft.Common.tasks: Move to ..
* xbuild/2.0/Microsoft.Common.tasks: .. here.
* xbuild/3.5/Microsoft.Common.tasks: New.
* xbuild/4.0/Microsoft.Common.tasks: New.
Use the corresponding 3.5/4.0 tasks assembly.

* xbuild_targets.make: Copies the target and tasks file in the correct
place, to allow running tests with different toolsversion.
* Makefile: Import xbuild_targets.make . Use correct assembly names for
Utilities assembly, for 3.5/4.0 profiles.
Install the correct Microsoft.Common.tasks file for the profile.
Copy xbuild.exe to class/li$(PROFILE), so that it can find other
profile dirs as relative path.
(EXTRA_DISTFILES): Add the new Microsoft.Common.tasks files.

svn path=/trunk/mcs/; revision=154835
61 files changed:
mcs/ChangeLog
mcs/Makefile
mcs/class/Microsoft.Build.Engine/ChangeLog
mcs/class/Microsoft.Build.Engine/Makefile
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildEngine.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTask.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Engine.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/LogExtensions.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Toolset.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ToolsetCollection.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ToolsetDefinitionLocations.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ChangeLog
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/Consts.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/EngineTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ProjectTest.cs
mcs/class/Microsoft.Build.Engine/Test/test-config-file-net-3.5
mcs/class/Microsoft.Build.Engine/Test/test-config-file-net-4.0
mcs/class/Microsoft.Build.Framework/ChangeLog
mcs/class/Microsoft.Build.Framework/Makefile
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework.dll.sources
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/ChangeLog
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/IBuildEngine2.cs
mcs/class/Microsoft.Build.Tasks/ChangeLog
mcs/class/Microsoft.Build.Tasks/Makefile
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ChangeLog
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Csc.cs
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/MSBuild.cs
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks_test.dll.sources
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/AssignProjectConfigurationTest.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/Consts.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CreateCSharpManifestResourceNameTest.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CreateItemTest.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CreateVisualBasicManifestResourceNameTest.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/FindAppConfigFileTest.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/RemoveDuplicatesTest.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/TaskBatchingTest.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/WriteLinesToFileTest.cs
mcs/class/Microsoft.Build.Tasks/Test/test-config-file-net-3.5
mcs/class/Microsoft.Build.Tasks/Test/test-config-file-net-4.0
mcs/class/Microsoft.Build.Utilities/ChangeLog
mcs/class/Microsoft.Build.Utilities/Makefile
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ChangeLog
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TargetDotNetFrameworkVersion.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/Task.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs
mcs/tools/ChangeLog
mcs/tools/Makefile
mcs/tools/xbuild/ChangeLog
mcs/tools/xbuild/Main.cs
mcs/tools/xbuild/Makefile
mcs/tools/xbuild/Parameters.cs
mcs/tools/xbuild/SolutionParser.cs
mcs/tools/xbuild/xbuild/2.0/Microsoft.Common.tasks
mcs/tools/xbuild/xbuild/3.5/Microsoft.Common.tasks
mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.tasks
mcs/tools/xbuild/xbuild/Microsoft.Common.tasks
mcs/tools/xbuild/xbuild_targets.make