From 8416085b3a6f6c91bc74c712f65b1c96f3cdeecb Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Wed, 16 Nov 2016 14:35:48 -0800 Subject: [PATCH] Add test assets for testing and tiny bugfix --- .../DotnetAddP2PProjects/App/App.csproj | 32 +++++++++++++++++ .../DotnetAddP2PProjects/App/Program.cs | 21 +++++++++++ .../DotnetAddP2PProjects/Lib1/Lib1.cs | 24 +++++++++++++ .../DotnetAddP2PProjects/Lib1/Lib1.csproj | 29 +++++++++++++++ .../DotnetAddP2PProjects/Lib2/Lib2.cs | 24 +++++++++++++ .../DotnetAddP2PProjects/Lib2/Lib2.csproj | 36 +++++++++++++++++++ .../DotnetAddP2PProjects/Lib3/Lib3.cs | 21 +++++++++++ .../DotnetAddP2PProjects/Lib3/Lib3.csproj | 29 +++++++++++++++ .../DotnetAddP2PProjects/Lib4/Lib4.cs | 21 +++++++++++ .../DotnetAddP2PProjects/Lib4/Lib4.csproj | 32 +++++++++++++++++ src/dotnet/commands/dotnet-add-p2p/Program.cs | 17 +++++++-- 11 files changed, 283 insertions(+), 3 deletions(-) create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/App/App.csproj create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/App/Program.cs create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib1/Lib1.cs create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib1/Lib1.csproj create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib2/Lib2.cs create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib2/Lib2.csproj create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib3/Lib3.cs create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib3/Lib3.csproj create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib4/Lib4.cs create mode 100644 TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib4/Lib4.csproj diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/App/App.csproj b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/App/App.csproj new file mode 100644 index 000000000..2df913261 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/App/App.csproj @@ -0,0 +1,32 @@ + + + + + Exe + net451;netcoreapp1.0 + + + + + + 1.0.0-alpha-20161104-2 + All + + + + + 1.0.1 + + + + + + + $(DefineConstants);NETCOREAPP1_0 + + + $(DefineConstants);NET451 + + + + \ No newline at end of file diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/App/Program.cs b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/App/Program.cs new file mode 100644 index 000000000..8d6e7d1db --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/App/Program.cs @@ -0,0 +1,21 @@ +using NSLib1; +using NSLib3; + +namespace ConsoleApplication +{ + public class Program + { + public static void Main(string[] args) + { +#if NETCOREAPP1_0 + Lib1.HelloNCA(); + Lib3.HelloNCA(); +#endif + +#if NET451 + Lib1.HelloNet451(); + Lib3.HelloNet451(); +#endif + } + } +} diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib1/Lib1.cs b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib1/Lib1.cs new file mode 100644 index 000000000..7250d586f --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib1/Lib1.cs @@ -0,0 +1,24 @@ +using System; +using NSLib2; + +namespace NSLib1 +{ + public class Lib1 + { +#if NETCOREAPP1_0 + public static void HelloNCA() + { + Console.WriteLine("Hello World from Lib1! (netcoreapp)"); + Lib2.HelloNCA(); + } +#endif + +#if NET451 + public static void HelloNet451() + { + Console.WriteLine("Hello World from Lib1! (net45)"); + Lib2.HelloNet451(); + } +#endif + } +} diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib1/Lib1.csproj b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib1/Lib1.csproj new file mode 100644 index 000000000..3466eb925 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib1/Lib1.csproj @@ -0,0 +1,29 @@ + + + + + Library + net451;netcoreapp1.0 + + + + + + 1.0.0-alpha-20161104-2 + All + + + + + 1.0.1 + + + + $(DefineConstants);NETCOREAPP1_0 + + + $(DefineConstants);NET451 + + + + \ No newline at end of file diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib2/Lib2.cs b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib2/Lib2.cs new file mode 100644 index 000000000..9452473dc --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib2/Lib2.cs @@ -0,0 +1,24 @@ +using System; +using NSLib4; + +namespace NSLib2 +{ + public class Lib2 + { +#if NETCOREAPP1_0 + public static void HelloNCA() + { + Console.WriteLine("Hello World from Lib2! (netcoreapp)"); + Lib4.HelloNCA(); + } +#endif + +#if NET451 + public static void HelloNet451() + { + Console.WriteLine("Hello World from Lib2! (net45)"); + Lib4.HelloNet451(); + } +#endif + } +} diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib2/Lib2.csproj b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib2/Lib2.csproj new file mode 100644 index 000000000..e4d8997f8 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib2/Lib2.csproj @@ -0,0 +1,36 @@ + + + + + Library + net451;netcoreapp1.0 + + + + + + 1.0.0-alpha-20161104-2 + All + + + + + 1.0.1 + + + + + + + + + + + $(DefineConstants);NETCOREAPP1_0 + + + $(DefineConstants);NET451 + + + + \ No newline at end of file diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib3/Lib3.cs b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib3/Lib3.cs new file mode 100644 index 000000000..b86a60de4 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib3/Lib3.cs @@ -0,0 +1,21 @@ +using System; + +namespace NSLib3 +{ + public class Lib3 + { +#if NETCOREAPP1_0 + public static void HelloNCA() + { + Console.WriteLine("Hello World from Lib3! (netcoreapp)"); + } +#endif + +#if NET451 + public static void HelloNet451() + { + Console.WriteLine("Hello World from Lib3! (net45)"); + } +#endif + } +} diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib3/Lib3.csproj b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib3/Lib3.csproj new file mode 100644 index 000000000..3466eb925 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib3/Lib3.csproj @@ -0,0 +1,29 @@ + + + + + Library + net451;netcoreapp1.0 + + + + + + 1.0.0-alpha-20161104-2 + All + + + + + 1.0.1 + + + + $(DefineConstants);NETCOREAPP1_0 + + + $(DefineConstants);NET451 + + + + \ No newline at end of file diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib4/Lib4.cs b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib4/Lib4.cs new file mode 100644 index 000000000..d993cc499 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib4/Lib4.cs @@ -0,0 +1,21 @@ +using System; + +namespace NSLib4 +{ + public class Lib4 + { +#if NETCOREAPP1_0 + public static void HelloNCA() + { + Console.WriteLine("Hello World from Lib4! (netcoreapp)"); + } +#endif + +#if NET451 + public static void HelloNet451() + { + Console.WriteLine("Hello World from Lib4! (net45)"); + } +#endif + } +} diff --git a/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib4/Lib4.csproj b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib4/Lib4.csproj new file mode 100644 index 000000000..76b8b884d --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib4/Lib4.csproj @@ -0,0 +1,32 @@ + + + + + Library + net451;netcoreapp1.0 + + + + + + 1.0.0-alpha-20161104-2 + All + + + + + 1.0.1 + + + + + + + $(DefineConstants);NETCOREAPP1_0 + + + $(DefineConstants);NET451 + + + + \ No newline at end of file diff --git a/src/dotnet/commands/dotnet-add-p2p/Program.cs b/src/dotnet/commands/dotnet-add-p2p/Program.cs index 605dd863c..611e5ee7d 100644 --- a/src/dotnet/commands/dotnet-add-p2p/Program.cs +++ b/src/dotnet/commands/dotnet-add-p2p/Program.cs @@ -129,12 +129,18 @@ namespace Microsoft.DotNet.Tools.Add.ProjectToProjectReference public static string GetFrameworkConditionString(string framework) { + if (string.IsNullOrEmpty(framework)) + { + return null; + } + return $" '$(TargetFramework)' == '{framework}' "; } public static Func FrameworkPred(string framework) where T : ProjectElement { - if (string.IsNullOrEmpty(framework)) + string conditionStr = GetFrameworkConditionString(framework); + if (conditionStr == null) { return (ig) => { var condChain = ig.ConditionChain(); @@ -142,7 +148,7 @@ namespace Microsoft.DotNet.Tools.Add.ProjectToProjectReference }; } - string conditionStr = GetFrameworkConditionString(framework).Trim(); + conditionStr = conditionStr.Trim(); return (ig) => { var condChain = ig.ConditionChain(); return condChain.Count == 1 && condChain.First().Trim() == conditionStr; @@ -193,7 +199,12 @@ namespace Microsoft.DotNet.Tools.Add.ProjectToProjectReference } ProjectItemGroupElement ret = root.CreateItemGroupElement(); - ret.Condition = GetFrameworkConditionString(framework); + string condStr = GetFrameworkConditionString(framework); + if (condStr != null) + { + ret.Condition = condStr; + } + root.AppendChild(ret); return ret; }