Fix P2P migration

Fixes #4269 by deep cloning the MsbuildTemplateProject for each P2P reference. Add test which migrates and builds P2P references.
This commit is contained in:
Sridhar Periyasamy 2016-10-03 10:58:32 -07:00
parent 09e8877bd4
commit a396630576
27 changed files with 201 additions and 54 deletions

View file

@ -0,0 +1,17 @@
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v1.5</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<Compile Include="**\*.cs" Exclude="$(GlobalExclude)" />
<EmbeddedResource Include="**\*.resx" Exclude="$(GlobalExclude)" />
<None Include="project.json" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View file

@ -5,11 +5,11 @@ using System;
namespace TestLibrary
{
public static class ProjectE
public static class ProjectC
{
public static string GetMessage()
{
return "This string came from ProjectF";
return "This string came from CsprojLibrary1";
}
}
}

View file

@ -0,0 +1,11 @@
{
"dependencies": {},
"frameworks": {
"netstandard1.5": {
"dependencies": {
"Microsoft.NETCore.Sdk": "1.0.0-alpha-20160923-4",
"NETStandard.Library": "1.6.0"
}
}
}
}

View file

@ -0,0 +1,17 @@
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v1.5</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<Compile Include="**\*.cs" Exclude="$(GlobalExclude)" />
<EmbeddedResource Include="**\*.resx" Exclude="$(GlobalExclude)" />
<None Include="project.json" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View file

@ -0,0 +1,15 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
namespace TestLibrary
{
public static class ProjectC
{
public static string GetMessage()
{
return "This string came from CsprojLibrary2";
}
}
}

View file

@ -0,0 +1,11 @@
{
"dependencies": {},
"frameworks": {
"netstandard1.5": {
"dependencies": {
"Microsoft.NETCore.Sdk": "1.0.0-alpha-20160923-4",
"NETStandard.Library": "1.6.0"
}
}
}
}

View file

@ -0,0 +1,17 @@
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v1.5</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<Compile Include="**\*.cs" Exclude="$(GlobalExclude)" />
<EmbeddedResource Include="**\*.resx" Exclude="$(GlobalExclude)" />
<None Include="project.json" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View file

@ -0,0 +1,15 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
namespace TestLibrary
{
public static class ProjectC
{
public static string GetMessage()
{
return "This string came from CsprojLibrary3";
}
}
}

View file

@ -0,0 +1,11 @@
{
"dependencies": {},
"frameworks": {
"netstandard1.5": {
"dependencies": {
"Microsoft.NETCore.Sdk": "1.0.0-alpha-20160923-4",
"NETStandard.Library": "1.6.0"
}
}
}
}

View file

@ -11,7 +11,7 @@ namespace TestApp
public static int Main(string[] args)
{
Console.WriteLine("This string came from ProjectA");
return 100;
return 0;
}
}
}

View file

@ -16,8 +16,8 @@
<SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\ClassLibrary1\ClassLibrary1.csproj" />
<ProjectReference Include="..\..\ClassLibrary2\ClassLibrary2.csproj" />
<ProjectReference Include="..\CsprojLibrary1\CsprojLibrary1.csproj" />
<ProjectReference Include="..\CsprojLibrary2\CsprojLibrary2.csproj" />
</ItemGroup>
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
</Project>

View file

@ -18,10 +18,10 @@
"target": "project",
"version": "1.0.0-*"
},
"ClassLibrary1": {
"CsprojLibrary1": {
"target": "project"
},
"ClassLibrary2": {
"CsprojLibrary2": {
"target": "project"
},
"NETStandard.Library": "1.6.0"

View file

@ -16,8 +16,8 @@
<SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\ClassLibrary2\ClassLibrary2.csproj" />
<ProjectReference Include="..\..\ClassLibrary3\ClassLibrary3.csproj" />
<ProjectReference Include="..\CsprojLibrary2\CsprojLibrary2.csproj" />
<ProjectReference Include="..\CsprojLibrary3\CsprojLibrary3.csproj" />
</ItemGroup>
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
</Project>

View file

@ -10,10 +10,10 @@
]
},
"dependencies": {
"ClassLibrary2": {
"CsprojLibrary2": {
"target": "project"
},
"ClassLibrary3": {
"CsprojLibrary3": {
"target": "project"
},
"NETStandard.Library": "1.6.0"

View file

@ -0,0 +1,19 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
using System.Diagnostics;
namespace TestApp
{
public class Program
{
public static int Main(string[] args)
{
Console.WriteLine("This string came from ProjectF");
string helperStr = TestLibrary.ProjectG.GetMessage();
Console.WriteLine(helperStr);
return 0;
}
}
}

View file

@ -1,22 +1,20 @@
{
"version": "1.0.0-*",
"buildOptions": {
"nowarn": [
"CS1591"
],
"xmlDoc": true,
"additionalArguments": [
"-highentropyva+"
]
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"dependencies": {
"ProjectG": {
"target": "project",
"version": "1.0.0-*"
},
"NETStandard.Library": "1.6.0"
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
},
"frameworks": {
"netstandard1.5": {}
"netcoreapp1.0": {}
}
}

View file

@ -5,7 +5,7 @@ using System;
namespace TestLibrary
{
public static class ProjectE
public static class ProjectG
{
public static string GetMessage()
{