diff --git a/build.proj b/build.proj
index 9de566ba5fb31..2d7db981405d8 100644
--- a/build.proj
+++ b/build.proj
@@ -61,9 +61,10 @@
net45
$(LibraryToolsFolder)\7-Zip
$(ZipExeFolder)\7z.exe
+ "$(LibraryToolsFolder)\nuget.exe"
-
+
@@ -72,10 +73,8 @@
-
- "$(LibraryToolsFolder)\nuget.exe"
-
-
+
+
@@ -122,7 +121,7 @@
-
+
@@ -131,8 +130,13 @@
-
+
+
@@ -140,7 +144,6 @@
-
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/PublishNugetPackageTests.proj b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/PublishNugetPackageTests.proj
new file mode 100644
index 0000000000000..59f46ae29fdad
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/PublishNugetPackageTests.proj
@@ -0,0 +1,82 @@
+
+
+
+
+ $(LibraryToolsFolder)\Microsoft.WindowsAzure.Build.Tasks\Build.Tasks.Tests\TestPublishProjects
+ $(LibraryRoot)\packages
+ portable;net40;net45
+ $(USERPROFILE)\nugetPublish
+ 1234
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MultiProjectMultiSln
+ CSProjTestPublish
+
+
+
+
+
+
+
+
+
+
+
+
+ MultiProjectSingleSln
+ Sdk RP1_MgmtPlane RP2_SDK.Test
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.csproj b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.csproj
new file mode 100644
index 0000000000000..534e4b890087f
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.csproj
@@ -0,0 +1,56 @@
+
+
+
+
+ Debug
+ AnyCPU
+ 424ee98f-19b5-4c8d-81a0-9e2891a20b36
+ Library
+ Properties
+ CSProjTestPublish
+ CSProjTestPublish
+ v4.5
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.nuget.proj b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.nuget.proj
new file mode 100644
index 0000000000000..590cf88cbff4f
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.nuget.proj
@@ -0,0 +1,9 @@
+
+
+
+
+ 0.0.1
+ $(MSBuildThisFileDirectory)
+
+
+
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.nuspec b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.nuspec
new file mode 100644
index 0000000000000..177bc88c44113
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.nuspec
@@ -0,0 +1,26 @@
+
+
+
+ CSProjTestPublish
+ $version$
+ CSProjTestPublish
+ CSProjTestPublish
+ CSProjTestPublish
+ http://aka.ms/windowsazureapache2
+ http://aka.ms/windowsazureapache2
+ http://aka.ms/windowsazureapache2
+ true
+ This is a test library used to test publish process to nuget
+ This is a test library used to test publish process to nuget.
+
+ CSProjTestPublish
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.sln b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.sln
new file mode 100644
index 0000000000000..fdc03eddaee70
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/CSProjTestPublish.sln
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSProjTestPublish", "CSProjTestPublish.csproj", "{424EE98F-19B5-4C8D-81A0-9E2891A20B36}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Net40-Debug|Any CPU = Net40-Debug|Any CPU
+ Net40-Release|Any CPU = Net40-Release|Any CPU
+ Net45-Debug|Any CPU = Net45-Debug|Any CPU
+ Net45-Release|Any CPU = Net45-Release|Any CPU
+ Portable-Debug|Any CPU = Portable-Debug|Any CPU
+ Portable-Release|Any CPU = Portable-Release|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Net40-Debug|Any CPU.ActiveCfg = Net40-Debug|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Net40-Debug|Any CPU.Build.0 = Net40-Debug|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Net40-Release|Any CPU.ActiveCfg = Net40-Release|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Net40-Release|Any CPU.Build.0 = Net40-Release|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Net45-Debug|Any CPU.ActiveCfg = Net45-Debug|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Net45-Debug|Any CPU.Build.0 = Net45-Debug|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Net45-Release|Any CPU.ActiveCfg = Net45-Release|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Net45-Release|Any CPU.Build.0 = Net45-Release|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Portable-Debug|Any CPU.ActiveCfg = Portable-Debug|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Portable-Debug|Any CPU.Build.0 = Portable-Debug|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Portable-Release|Any CPU.ActiveCfg = Portable-Release|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Portable-Release|Any CPU.Build.0 = Portable-Release|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {424EE98F-19B5-4C8D-81A0-9E2891A20B36}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/Class1.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/Class1.cs
new file mode 100644
index 0000000000000..59ac87386fe53
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/Class1.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CSProjTestPublish
+{
+ public class Class1
+ {
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/Properties/AssemblyInfo.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000000..65d64fb4ec16e
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/CSProjTestPublish/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("CSProjTestPublish")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("CSProjTestPublish")]
+[assembly: AssemblyCopyright("Copyright � 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("424ee98f-19b5-4c8d-81a0-9e2891a20b36")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("0.0.1.0")]
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/Class1.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/Class1.cs
new file mode 100644
index 0000000000000..3166a69623af6
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/Class1.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace NetCoreTestPublish
+{
+ public class Class1
+ {
+ public Class1()
+ {
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/NetCoreTestPublish.sln b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/NetCoreTestPublish.sln
new file mode 100644
index 0000000000000..e6a23a9552032
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/NetCoreTestPublish.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "NetCoreTestPublish", "NetCoreTestPublish.xproj", "{4E25F50B-E3E9-4D84-AF23-629694F3FBB9}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4E25F50B-E3E9-4D84-AF23-629694F3FBB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4E25F50B-E3E9-4D84-AF23-629694F3FBB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4E25F50B-E3E9-4D84-AF23-629694F3FBB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4E25F50B-E3E9-4D84-AF23-629694F3FBB9}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/NetCoreTestPublish.xproj b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/NetCoreTestPublish.xproj
new file mode 100644
index 0000000000000..1a1fc4da4cad5
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/NetCoreTestPublish.xproj
@@ -0,0 +1,21 @@
+
+
+
+ 14.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+
+ 4e25f50b-e3e9-4d84-af23-629694f3fbb9
+ NetCoreTestPublish
+ .\obj
+ .\bin\
+ v4.5
+
+
+
+ 2.0
+
+
+
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/Properties/AssemblyInfo.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000000..cfe251df59a41
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/Properties/AssemblyInfo.cs
@@ -0,0 +1,19 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("NetCoreTestPublish")]
+[assembly: AssemblyTrademark("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("4e25f50b-e3e9-4d84-af23-629694f3fbb9")]
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/project.json b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/project.json
new file mode 100644
index 0000000000000..864b9a5f3facb
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectMultiSln/NetCoreTestPublish/project.json
@@ -0,0 +1,13 @@
+{
+ "version": "1.0.0-*",
+
+ "dependencies": {
+ "NETStandard.Library": "1.6.0"
+ },
+
+ "frameworks": {
+ "netstandard1.6": {
+ "imports": "dnxcore50"
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/MultiProjectSingleSolution.sln b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/MultiProjectSingleSolution.sln
new file mode 100644
index 0000000000000..8c962fd5ae049
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/MultiProjectSingleSolution.sln
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RP1_MgmtPlane", "RP1_MgmtPlane\RP1_MgmtPlane.xproj", "{98DF3CCC-731E-436A-ABAE-41D3BEAA9B5D}"
+EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RP1_DataPlane", "RP1_DataPlane\RP1_DataPlane.xproj", "{A74B90B5-57AF-4E7F-8FD0-CA1F9BFAE6D1}"
+EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RP2_SDK.Test", "RP2_Sdk\RP2_SDK.Test\RP2_SDK.Test.xproj", "{3D2CD7FB-D1CE-48F2-800E-8B63F7767734}"
+EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RP2_Sdk", "RP2_Sdk\Sdk\RP2_Sdk.xproj", "{E84C518F-6F25-415A-8E54-443CD6FDAB26}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {98DF3CCC-731E-436A-ABAE-41D3BEAA9B5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {98DF3CCC-731E-436A-ABAE-41D3BEAA9B5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {98DF3CCC-731E-436A-ABAE-41D3BEAA9B5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {98DF3CCC-731E-436A-ABAE-41D3BEAA9B5D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A74B90B5-57AF-4E7F-8FD0-CA1F9BFAE6D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A74B90B5-57AF-4E7F-8FD0-CA1F9BFAE6D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A74B90B5-57AF-4E7F-8FD0-CA1F9BFAE6D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A74B90B5-57AF-4E7F-8FD0-CA1F9BFAE6D1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D2CD7FB-D1CE-48F2-800E-8B63F7767734}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D2CD7FB-D1CE-48F2-800E-8B63F7767734}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D2CD7FB-D1CE-48F2-800E-8B63F7767734}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3D2CD7FB-D1CE-48F2-800E-8B63F7767734}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E84C518F-6F25-415A-8E54-443CD6FDAB26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E84C518F-6F25-415A-8E54-443CD6FDAB26}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E84C518F-6F25-415A-8E54-443CD6FDAB26}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E84C518F-6F25-415A-8E54-443CD6FDAB26}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/Class1.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/Class1.cs
new file mode 100644
index 0000000000000..df9c24daeb865
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/Class1.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace RP1_DataPlane
+{
+ public class Class1
+ {
+ public Class1()
+ {
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/Properties/AssemblyInfo.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000000..b2077cef55b2c
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/Properties/AssemblyInfo.cs
@@ -0,0 +1,19 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RP1_DataPlane")]
+[assembly: AssemblyTrademark("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("a74b90b5-57af-4e7f-8fd0-ca1f9bfae6d1")]
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/RP1_DataPlane.xproj b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/RP1_DataPlane.xproj
new file mode 100644
index 0000000000000..7fc9daca5fcec
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/RP1_DataPlane.xproj
@@ -0,0 +1,21 @@
+
+
+
+ 14.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+
+ a74b90b5-57af-4e7f-8fd0-ca1f9bfae6d1
+ RP1_DataPlane
+ .\obj
+ .\bin\
+ v4.5
+
+
+
+ 2.0
+
+
+
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/project.json b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/project.json
new file mode 100644
index 0000000000000..864b9a5f3facb
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_DataPlane/project.json
@@ -0,0 +1,13 @@
+{
+ "version": "1.0.0-*",
+
+ "dependencies": {
+ "NETStandard.Library": "1.6.0"
+ },
+
+ "frameworks": {
+ "netstandard1.6": {
+ "imports": "dnxcore50"
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/Class1.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/Class1.cs
new file mode 100644
index 0000000000000..2edc22aad372c
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/Class1.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace RP1_MgmtPlane
+{
+ public class Class1
+ {
+ public Class1()
+ {
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/Properties/AssemblyInfo.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000000..1f70377b91ccb
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/Properties/AssemblyInfo.cs
@@ -0,0 +1,19 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RP1_MgmtPlane")]
+[assembly: AssemblyTrademark("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("98df3ccc-731e-436a-abae-41d3beaa9b5d")]
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/RP1_MgmtPlane.xproj b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/RP1_MgmtPlane.xproj
new file mode 100644
index 0000000000000..7cf1d703668e8
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/RP1_MgmtPlane.xproj
@@ -0,0 +1,21 @@
+
+
+
+ 14.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+
+ 98df3ccc-731e-436a-abae-41d3beaa9b5d
+ RP1_MgmtPlane
+ .\obj
+ .\bin\
+ v4.5
+
+
+
+ 2.0
+
+
+
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/project.json b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/project.json
new file mode 100644
index 0000000000000..864b9a5f3facb
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP1_MgmtPlane/project.json
@@ -0,0 +1,13 @@
+{
+ "version": "1.0.0-*",
+
+ "dependencies": {
+ "NETStandard.Library": "1.6.0"
+ },
+
+ "frameworks": {
+ "netstandard1.6": {
+ "imports": "dnxcore50"
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/Class1.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/Class1.cs
new file mode 100644
index 0000000000000..0846564519ae4
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/Class1.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace RP2_SDK.Test
+{
+ public class Class1
+ {
+ public Class1()
+ {
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/Properties/AssemblyInfo.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000000..a3d6717136e55
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/Properties/AssemblyInfo.cs
@@ -0,0 +1,19 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RP2_SDK.Test")]
+[assembly: AssemblyTrademark("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("3d2cd7fb-d1ce-48f2-800e-8b63f7767734")]
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/RP2_SDK.Test.xproj b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/RP2_SDK.Test.xproj
new file mode 100644
index 0000000000000..63cd923be4057
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/RP2_SDK.Test.xproj
@@ -0,0 +1,21 @@
+
+
+
+ 14.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+
+ 3d2cd7fb-d1ce-48f2-800e-8b63f7767734
+ RP2_SDK.Test
+ .\obj
+ .\bin\
+ v4.5
+
+
+
+ 2.0
+
+
+
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/project.json b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/project.json
new file mode 100644
index 0000000000000..864b9a5f3facb
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/RP2_SDK.Test/project.json
@@ -0,0 +1,13 @@
+{
+ "version": "1.0.0-*",
+
+ "dependencies": {
+ "NETStandard.Library": "1.6.0"
+ },
+
+ "frameworks": {
+ "netstandard1.6": {
+ "imports": "dnxcore50"
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/Class1.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/Class1.cs
new file mode 100644
index 0000000000000..0ced9f1046aa0
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/Class1.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace RP2_Sdk
+{
+ public class Class1
+ {
+ public Class1()
+ {
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/Properties/AssemblyInfo.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000000..4a622f00d0deb
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/Properties/AssemblyInfo.cs
@@ -0,0 +1,19 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RP2_Sdk")]
+[assembly: AssemblyTrademark("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e84c518f-6f25-415a-8e54-443cd6fdab26")]
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/RP2_Sdk.xproj b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/RP2_Sdk.xproj
new file mode 100644
index 0000000000000..bfa8a68b2ff4a
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/RP2_Sdk.xproj
@@ -0,0 +1,21 @@
+
+
+
+ 14.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+
+ e84c518f-6f25-415a-8e54-443cd6fdab26
+ RP2_Sdk
+ .\obj
+ .\bin\
+ v4.5
+
+
+
+ 2.0
+
+
+
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/project.json b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/project.json
new file mode 100644
index 0000000000000..864b9a5f3facb
--- /dev/null
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/Build.Tasks.Tests/TestPublishProjects/MultiProjectSingleSln/RP2_Sdk/Sdk/project.json
@@ -0,0 +1,13 @@
+{
+ "version": "1.0.0-*",
+
+ "dependencies": {
+ "NETStandard.Library": "1.6.0"
+ },
+
+ "frameworks": {
+ "netstandard1.6": {
+ "imports": "dnxcore50"
+ }
+ }
+}
diff --git a/tools/Microsoft.WindowsAzure.Build.Tasks/FilterOutAutoRestLibraries.cs b/tools/Microsoft.WindowsAzure.Build.Tasks/FilterOutAutoRestLibraries.cs
index 502d21b0a085e..a10d05b77c377 100644
--- a/tools/Microsoft.WindowsAzure.Build.Tasks/FilterOutAutoRestLibraries.cs
+++ b/tools/Microsoft.WindowsAzure.Build.Tasks/FilterOutAutoRestLibraries.cs
@@ -17,6 +17,7 @@
using System.IO;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
+using System.Linq;
namespace Microsoft.WindowsAzure.Build.Tasks
{
@@ -28,6 +29,14 @@ public class FilterOutAutoRestLibraries : Task
[Required]
public string AutoRestMark { get; set; }
+ ///
+ /// Name of packages that needs to be published. Currently for ease of user, it will be space delimited list of NetCore projects
+ /// Non-NetCore projects cannot be published more than one package due to MSBuild limitation as well as our existing architecture of nuget.proj files
+ /// Plus once we are very limited set of non-netCore projects, so the effort is not worth. Worse case, each job to publish 1 package at a time
+ /// E.g. /p:PackageName="PackageName1 PackageName2" string can be passed to publish PacakgeName1 and PackageName2
+ ///
+ public string NugetPackagesToPublish { get; set; }
+
[Output]
public ITaskItem[] Non_NetCore_AutoRestLibraries { get; private set; }
@@ -43,6 +52,18 @@ public override bool Execute()
var netCoreAutoRestLibraries = new List();
var netCoreLibraryTestOnes = new List();
var others = new List();
+
+ List nPkgsList = null;
+
+ if (NugetPackagesToPublish != null)
+ {
+ NugetPackagesToPublish = NugetPackagesToPublish.Trim();
+
+ if (!string.IsNullOrEmpty(NugetPackagesToPublish))
+ {
+ nPkgsList = NugetPackagesToPublish.Split(' ').ToList();
+ }
+ }
foreach (ITaskItem solution in AllLibraries)
{
bool isAutoRestLibrary = false;
@@ -58,8 +79,9 @@ public override bool Execute()
break;
}
}
+
if (isAutoRestLibrary)
- {
+ {
string[] nugetProjects = Directory.GetFiles(libFolder, "*.nuget.proj", SearchOption.AllDirectories);
if (nugetProjects.Length > 1)
{
@@ -70,7 +92,20 @@ public override bool Execute()
solution.SetMetadata("NugetProj", nugetProjects[0]);
solution.SetMetadata("PackageName", Path.GetFileNameWithoutExtension(nugetProjects[0]));
}
- nonNetCoreAutoRestLibraries.Add(solution);
+
+ if (nPkgsList != null)
+ {
+ //We need to filter out projects from the final output to build and publish limited set of projects
+ string projectDirPath = Path.GetDirectoryName(nugetProjects[0]);
+ string projectDirName = Path.GetFileName(projectDirPath);
+ string match = nPkgsList.Find((pn) => pn.Equals(projectDirName, System.StringComparison.OrdinalIgnoreCase));
+ if (!string.IsNullOrEmpty(match))
+ nonNetCoreAutoRestLibraries.Add(solution);
+ }
+ else
+ {
+ nonNetCoreAutoRestLibraries.Add(solution);
+ }
}
else
{
@@ -82,15 +117,26 @@ public override bool Execute()
foreach (var file in netCoreProjectJsonFiles)
{
- string dir = Path.GetDirectoryName(file);
- if (dir.EndsWith(".test", System.StringComparison.OrdinalIgnoreCase) ||
- dir.EndsWith(".tests", System.StringComparison.OrdinalIgnoreCase))
+ string dirPath = Path.GetDirectoryName(file);
+ string dirName = Path.GetFileName(dirPath);
+ if (dirPath.EndsWith(".test", System.StringComparison.OrdinalIgnoreCase) ||
+ dirPath.EndsWith(".tests", System.StringComparison.OrdinalIgnoreCase))
{
- testDirectories.Add(dir);
+ testDirectories.Add(dirPath);
}
else
{
- libDirectories.Add(dir);
+ if (nPkgsList != null)
+ {
+ //We need to filter out projects from the final output to build and publish limited set of projects
+ string match = nPkgsList.Find((pn) => pn.Equals(dirName, System.StringComparison.OrdinalIgnoreCase));
+ if (!string.IsNullOrEmpty(match))
+ libDirectories.Add(dirPath);
+ }
+ else
+ {
+ libDirectories.Add(dirPath);
+ }
}
}
@@ -122,4 +168,4 @@ public override bool Execute()
return true;
}
}
-}
+}
\ No newline at end of file