External partners can download and install the NuGet packages when they install and use Visual Studio 2015. For more information, see portalfx-extensions-getting-started-procedure.md. The packages that are installed are located in the C:\Program Files (x86)\Microsoft SDKs\PortalSDK\Packages
directory.
- In Visual Studio
- Install the latest version of the Portal SDK MSI, as specified in downloads.md.
- In Visual Studio open your Solution and select
Tools > NuGet Package Manager > Manage NuGet packages for Solution…
. - Select all
Microsoft.Portal.*
NuGet packages. - Click
Update
. - Build and fix any breaking changes, as described in Breaking changes.
- In CoreXT
-
Find the latest SDK version number from the SDK downloads document located at /portal-sdk/generated/downloads.md.
-
Update your
package.config
to the latest version of the SDK. -
Run
init.cmd
.NOTE: Your $(Pkg*) references in your
csproj
file should automatically update to point at the newest restored NuGet. -
Copy over
/Content
files to get latest*.d.ts
and*.pde
files.NOTE: CoreXT does not copy content files. Typically, internal teams use either a
<Target />
or aNuGetContentRestore
task to rehydrate the Content files from their CxCache. -
Build and fix any breaking changes.
The Azure Portal SDK ships framework assemblies, tools, test framework and extension PDE files as NuGet packages. It also provides the capability to ship extensions as NuGet packages. This allows extensions to invoke blades and parts from other extensions at runtime. For more information about sharing extensions as NuGet packages, see portalfx-pde-publish.md.
In order to download the NuGet packages as part of an extension, developers can choose between CoreXT compatible package sources or consume the packages installed locally by the MSI. Choose a configuration that applies to your extension development context.
Portal SDK NuGet packages are published to the Microsoft internal NuGet feed located at https://aka.ms/portalfx/nugetfeed. Depending on your internal build system, the configuration of how to consume this feed will vary. For the latest guidance on consuming the feed within your build system, consult your build system's documentation. For those using 1ES systems, see the NuGet in 1ES guide located at https://www.1eswiki.com/wiki/NuGet_in_1ES.
You can also browse the feed in VSTS.
PortalSDK NuGet packages are only published to Microsoft internal NuGet feeds. If you do not have access to those feeds such as the one mentioned above you will need use those NuGet packages that are included in the Azure Portal SDK. This is the recommended path for third party extension developers.
Installing the Portal SDK MSI will unpack the NuGet packages to a default location of C:\Program Files (x86)\Microsoft SDKs\PortalSDK\packages
and will setup a NuGet package source named PortalSDK that points to that location. Any subsequent actions performed in Visual Studio or the NuGet command line will also search the new local PortalSDK feed in program files for Portal-related NuGet packages.
Packages used by extension developers are separated into the following categories.
The following sections describe the various packages by category. All packages are available both in the Portal SDK MSI and through the deep-linked package source. Some packages are shipped as NuGet packages, and others as Node modules. All packages in the following tables are NuGet packages unless they are annotated to be a node module.
After installation, NuGet packages that are used for development can be viewed in the packages.config
file or in the NuGet Package Manager tool in Visual Studio. Node modules can be viewed in package.json
.
Package | Purpose |
---|---|
Microsoft.Portal.Framework | Contains framework assemblies required for extension development. |
Microsoft.Portal.Security.AadCore | Contains AAD module used for auth. |
Microsoft.Portal.Tools | Contains PDC, build target files (.target) , Definition files and TypeScript 2.3.3 compiler. |
Microsoft.Portal.Tools.ContentUnbundler | Contains the tool that packages an extension UI into a zip file which can be served by the hosting service. |
Package | Purpose |
---|---|
Microsoft.Azure.Gallery.AzureGalleryUtility | Contains tools to package, upload and update gallery items in the Azure Portal marketplace. |
Microsoft.Azure.Gallery.Common | Common packages used by Microsoft.Azure.Gallery.AzureGalleryUtility |
Package | Purpose | Document |
---|---|---|
msportalfx-test (node module) | Provides APIs for authoring UI-based test cases with Selenium in TypeScript. | |
msportalfx-ut (node module) | Provides APIs for authoring Unit Tests against extension code in TypeScript. Includes runtime, APIs, test runner support, trx and junit output for CI and code coverage reporting. See top-extensions-unit-test.md for more details. | |
Microsoft.Portal.TestFramework | Provides APIs for writing UI-based test cases with Selenium authored in CSharp. For more information about using the test framework, see top-extensions-csharp-test-framework.md. | |
Microsoft.Portal.TestFramework.UnitTest | The msportalfx-ut node module shipped in a NuGet package for those that cannot consume the internal package source that is located at https://msazure.visualstudio.com/One/Azure%20Portal/_packaging?feed=AzurePortalNpmRegistry&_a=feed, or are on CoreXT or similar IDE's that require offline/disconnected builds. For more information about unit testing, see top-extensions-unit-test.md. |
Portal Definition Exports, or PDE's, are extensions that are maintained by teams other than the Ibiza team and your team. These extensions are available for your use. This list of packages are contributed to by extension developers who are exposing functionality from their extension by way of shipping their PDE. The absence of an extension package from the list does not imply that the package does not exist, or does not ship. To verify whether an extension ships a NuGet package, reach out to the respective teams at portalfx-extensions-contacts.md or https://aka.ms/portalfx/uservoice.
Package | Purpose | Document |
---|---|---|
Microsoft.Portal.Extensions.KeyVault | Blades and parts shared by the KeyVault extension. | portalfx-pde-keyvault.md |
Microsoft.Portal.Extensions.AAD | Blades and parts shared by the AAD extension. | portalfx-pde-adrbac.md |
Microsoft.Portal.Extensions.Billing | Blades and parts shared by the Billing extension. | portalfx-pde-billing.md |
Microsoft.Portal.Extensions.Hubs | Blades and parts shared by the Hubs extension. | portalfx-hubsextension-pde.md |
Microsoft.Portal.Extensions.Insights | Blades and parts shared by the Insights extension. | portalfx-pde-azureinsights.md |
Microsoft.Portal.Extensions.Monitoring | Blades and parts shared by the Monitoring extension. | portalfx-pde-monitoring.md |
The following NuGet packages have been deprecated. Do not use these packages when building new extensions.
Package | Purpose |
---|---|
Microsoft.Portal.Azure.Website | Sideload your extension instead, as specified in top-extensions-sideloading.md. |
Microsoft.Portal.Azure.WebsiteNoAuth | Sideload your extension instead, as specified in top-extensions-sideloading.md. |
Microsoft.Portal.Framework.Scripts | Use Microsoft.Portal.TestFramework.UnitTest instead, as specified in top-extensions-unit-test.md. |
Microsoft.Portal.Tools.Etw | The recommended practice is to use the Extension Hosting Service as specified in top-extensions-hosting-service.md instead of custom deployment, as specified in top-extensions-custom-deployment.md. If you are self-hosting your extension, then this package provides the EtwRelatedFilesUtility.exe tool and sample configurations. |
Microsoft.Portal.TypeMetadata | Author typemetadata directly instead of using this package, as specified in portalfx-data-typemetadata.md#non-generated-type-metadata. |