[xbuild] Fix bug #646941. Add explicit System.Core for >=3.5 projects.
authorAnkit Jain <radical@corewars.org>
Fri, 15 Oct 2010 13:19:13 +0000 (18:49 +0530)
committerAnkit Jain <radical@corewars.org>
Fri, 15 Oct 2010 13:19:13 +0000 (18:49 +0530)
For projects targeting TargetFrameworkVersion >= 3.5, automatically
add a reference to System.Core . This can be controlled via two
properties:

 $(AddAdditionalExplicitAssemblyReferences) and
 $(AdditionalExplicitAssemblyReferences) .

This is used only for projects built with ToolsVersion=4.0 .

mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets

index 420481c30406e65592236827c33a7a066a3a4a0f..b55f2defc219d0cd3811fc98eddf4f3645bf385b 100644 (file)
@@ -30,6 +30,9 @@
                <_OriginalPlatform>$(Platform)</_OriginalPlatform>
                <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
                <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
+
+               <AddAdditionalExplicitAssemblyReferences Condition="'$(AddAdditionalExplicitAssemblyReferences)' == ''">true</AddAdditionalExplicitAssemblyReferences>
+               <AdditionalExplicitAssemblyReferences Condition="'$(AddAdditionalExplicitAssemblyReferences)' == 'true' and '$(TargetFrameworkVersion)' != 'v2.0' and '$(TargetFrameworkVersion)' != 'v3.0'">System.Core;$(AdditionalExplicitAssemblyReferences)</AdditionalExplicitAssemblyReferences>
        </PropertyGroup>
 
        <PropertyGroup>
        <Target Name="AfterResolveReferences" />
 
        <Target Name="ResolveAssemblyReferences" DependsOnTargets="$(ResolveAssemblyReferencesDependsOn)">
+               <CreateItem Include="@(Reference)" Exclude="$(AdditionalExplicitAssemblyReferences)">
+                       <Output TaskParameter="Include" ItemName="_Reference"/>
+               </CreateItem>
+
+               <CreateItem Include="$(AdditionalExplicitAssemblyReferences)">
+                       <Output TaskParameter="Include" ItemName="_Reference"/>
+               </CreateItem>
+
                <ResolveAssemblyReference
-                       Assemblies="@(Reference)"
+                       Assemblies="@(_Reference)"
                        AssemblyFiles="@(ChildProjectReferences)"
                        SearchPaths="$(AssemblySearchPaths)"
                        CandidateAssemblyFiles="@(Content);@(None)"