Add support for ToolsVersion and correctly build msbuild+xbuild assemblies
commit03146bb32a9cffb8f06320c35adaea785136a3d2
authorankit <ankit@e3ebcda4-bce8-0310-ba0a-eca2169e7518>
Tue, 6 Apr 2010 09:57:58 +0000 (6 09:57 +0000)
committerankit <ankit@e3ebcda4-bce8-0310-ba0a-eca2169e7518>
Tue, 6 Apr 2010 09:57:58 +0000 (6 09:57 +0000)
treef9844246686e4af0b0d8693d92a45e040dde68b8
parent3be14824cd134cff01d144221516a5cb026f83c6
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.

git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mcs@154835 e3ebcda4-bce8-0310-ba0a-eca2169e7518
59 files changed:
ChangeLog
Makefile
class/Microsoft.Build.Engine/ChangeLog
class/Microsoft.Build.Engine/Makefile
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildEngine.cs
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTask.cs
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Engine.cs
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/LogExtensions.cs [new file with mode: 0644]
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Toolset.cs [copied from class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TargetDotNetFrameworkVersion.cs with 63% similarity]
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ToolsetCollection.cs [new file with mode: 0644]
class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ToolsetDefinitionLocations.cs [moved from class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/Consts.cs with 70% similarity]
class/Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources
class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ChangeLog
class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/Consts.cs
class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/EngineTest.cs
class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ProjectTest.cs
class/Microsoft.Build.Engine/Test/test-config-file-net-3.5 [new file with mode: 0644]
class/Microsoft.Build.Engine/Test/test-config-file-net-4.0 [new file with mode: 0644]
class/Microsoft.Build.Framework/ChangeLog
class/Microsoft.Build.Framework/Makefile
class/Microsoft.Build.Framework/Microsoft.Build.Framework.dll.sources
class/Microsoft.Build.Framework/Microsoft.Build.Framework/ChangeLog
class/Microsoft.Build.Framework/Microsoft.Build.Framework/IBuildEngine2.cs [copied from class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TargetDotNetFrameworkVersion.cs with 54% similarity]
class/Microsoft.Build.Tasks/ChangeLog
class/Microsoft.Build.Tasks/Makefile
class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ChangeLog
class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Csc.cs
class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/MSBuild.cs
class/Microsoft.Build.Tasks/Microsoft.Build.Tasks_test.dll.sources
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/AssignProjectConfigurationTest.cs
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CreateCSharpManifestResourceNameTest.cs
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CreateItemTest.cs
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CreateVisualBasicManifestResourceNameTest.cs
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/FindAppConfigFileTest.cs
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/RemoveDuplicatesTest.cs
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/TaskBatchingTest.cs
class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/WriteLinesToFileTest.cs
class/Microsoft.Build.Tasks/Test/test-config-file-net-3.5 [new file with mode: 0644]
class/Microsoft.Build.Tasks/Test/test-config-file-net-4.0 [new file with mode: 0644]
class/Microsoft.Build.Utilities/ChangeLog
class/Microsoft.Build.Utilities/Makefile
class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ChangeLog
class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TargetDotNetFrameworkVersion.cs
class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/Task.cs
class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs
tools/ChangeLog
tools/Makefile
tools/xbuild/ChangeLog
tools/xbuild/Main.cs
tools/xbuild/Makefile
tools/xbuild/Parameters.cs
tools/xbuild/SolutionParser.cs
tools/xbuild/xbuild/2.0/Microsoft.Common.tasks [moved from tools/xbuild/xbuild/Microsoft.Common.tasks with 100% similarity]
tools/xbuild/xbuild/3.5/Microsoft.Common.tasks [new file with mode: 0644]
tools/xbuild/xbuild/4.0/Microsoft.Common.tasks [new file with mode: 0644]
tools/xbuild/xbuild_targets.make [new file with mode: 0644]