forked from Azure/azure-sdk-for-net
-
Notifications
You must be signed in to change notification settings - Fork 0
This repository is for active development of the Azure SDK for .NET. For consumers of the SDK we recommend visiting our public developer docs at https://docs.microsoft.com/en-us/dotnet/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-net.
License
jenvill/azure-sdk-for-net
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
<!DOCTYPE html> <!--[if IE]><![endif]--> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Contributing | Azure SDK for NET </title> <meta name="viewport" content="width=device-width"> <meta name="title" content="Contributing | Azure SDK for NET "> <meta name="generator" content="docfx 2.43.2.0"> <link rel="shortcut icon" href="https://c.s-microsoft.com/favicon.ico?v2"> <link rel="stylesheet" href="styles/docfx.vendor.css"> <link rel="stylesheet" href="styles/docfx.css"> <link rel="stylesheet" href="styles/main.css"> <meta property="docfx:navrel" content="navtoc.html"> <meta property="docfx:tocrel" content="toc.html"> <meta property="docfx:newtab" content="true"> </head> <body data-spy="scroll" data-target="#affix" data-offset="120"> <div id="wrapper"> <header> <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="index.html"> <img id="logo" class="svg" src="logo.svg" alt=""> </a> </div> <div class="collapse navbar-collapse" id="navbar"> <form class="navbar-form navbar-right" role="search" id="search"> <div class="form-group"> <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off"> </div> </form> </div> </div> </nav> <div class="subnav navbar navbar-default"> <div class="container hide-when-search" id="breadcrumb"> <ul class="breadcrumb"> <li></li> </ul> </div> </div> </header> <div role="main" class="container body-content hide-when-search"> <div class="sidenav hide-when-search"> <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a> <div class="sidetoggle collapse" id="sidetoggle"> <div id="sidetoc"></div> </div> </div> <div class="article row grid-right"> <div class="col-md-10"> <article class="content wrap" id="_content" data-uid=""> <h1 id="contributing">Contributing</h1> <table> <thead> <tr> <th>Component</th> <th>Build Status</th> </tr> </thead> <tbody> <tr> <td>Management Libraries</td> <td><a href="https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=529&branchName=master"><img src="https://dev.azure.com/azure-sdk/public/_apis/build/status/net/net%20-%20mgmt%20-%20ci?branchName=master" alt="Build Status"></a></td> </tr> </tbody> </table> <h1 id="prerequisites">Prerequisites:</h1> <ul> <li>Install VS 2019 (Community or higher) and make sure you have the latest updates (<a href="https://www.visualstudio.com/">https://www.visualstudio.com/</a>). <ul> <li>Need at least .NET Framework 4.6.1 and 4.7 development tools</li> </ul> </li> <li>Install the <strong>.NET Core cross-platform development</strong> workloads in VisualStudio</li> <li>Install <strong>.NET Core 3.1.101 SDK</strong> or higher for your specific platform. (<a href="https://dotnet.microsoft.com/download/dotnet-core/3.1">https://dotnet.microsoft.com/download/dotnet-core/3.1</a>)</li> <li>Install the latest version of git (<a href="https://git-scm.com/downloads">https://git-scm.com/downloads</a>)</li> </ul> <h2 id="general-things-to-know">GENERAL THINGS TO KNOW:</h2> <p><strong>Client Libraries</strong> are sdks used to interact with azure resources at application run time while <strong>Management Libraries</strong> are those used to manage (create/modify/delete) Azure resources.</p> <p><strong>Build Repo :</strong> To build all Client and Management libraries together. Invoke <code>dotnet build build.proj</code> from the root of the repo.<br>To scope to a single service supply a scope property e.g. <code>dotnet build build.proj /p:Scope=servicebus</code>. This will build both client and management projects in the specified service. If using msbuild you must run restore first. See below for how to build the <a href="#client-libraries">client</a> or <a href="#management-libraries">management</a> libraries independently.</p> <p><strong>Path Length :</strong> To account for the <strong>260 characters Path Length Limit</strong> encountered on windows OS, file paths within the repo is keep below 210 characters. This gives you a runway of 49 characters as clone path for your repo. Paths longer that 260 characters will cause the build to break on windows OS and on CI. Assuming you clone to the default VisualStudio location such that the root of your clone is <code>C:\Users\\**USERNAME**\Source\Repos\azure-sdk-for-net</code> your username will have to be 9 characters long to avoid build errors caused by long paths. Consider using <code>C:\git</code> as you clone path.</p> <p><strong>Dependencies :</strong> To ensure that the same versions of dependencies are used for all projects in the repo, package versions are managed from a central location in <code>eng\Packages.Data.props</code>. When adding package references you should first ensure that an <strong>Update</strong> reference of the package with the version exist in the <strong>Packages.Data.props</strong> then <strong>Include</strong> the reference without the version in your .csproj. Contact <a href="mailto:azuresdkengsysteam@microsoft.com">azuresdkengsysteam@microsoft.com</a> if you need to change versions for packages already present in <strong>Packages.Data.props</strong></p> <p><strong>Line Endings :</strong> If working on windows OS ensure git is installed with <code>Checkout Windows-style, commit Unix-style</code> option or <code>core.autocrlf</code> set to <em>true</em> in git config. If working on Unix based Linux or MacOS ensure git is installed with <code>Checkout as-is, commit Unix-style</code> option or <code>core.autocrlf</code> set to <em>input</em> in git config</p> <h1 id="management-libraries">Management Libraries</h1> <h2 id="to-build">TO BUILD:</h2> <ol> <li>Open any solution, eg "SDKs\Compute\Microsoft.Azure.Management.Compute.sln"</li> <li>Build solution from Visual Studio</li> </ol> <h3 id="single-service-from-command-line">Single Service from Command Line</h3> <ol> <li>Open VS 2019 command Prompt</li> <li>From the root directory</li> <li>Invoke <code>msbuild eng\mgmt.proj /p:scope=Compute</code></li> </ol> <blockquote> <p><em>Build</em> without any scope will build all management SDK's.</p> </blockquote> <h3 id="create-single-nuget-package">Create single nuget package</h3> <p>In order to build one package and run it's test <code>msbuild eng\mgmt.proj /t:CreateNugetPackage /p:scope=Compute</code> Nuget package will be created in root directory under \artifacts\packages\Debug (default configuration is Debug)</p> <h2 id="to-test">TO TEST:</h2> <h3 id="using-visual-studio">Using Visual Studio:</h3> <ol> <li>Build project in Visual Studio.</li> <li><strong>Test Explorer</strong> window will get populated with tests. Select test and <code>Run</code> or <code>Debug</code></li> </ol> <h3 id="using-the-command-line">Using the command line:</h3> <p>Run e.g. <code>msbuild eng\mgmt.proj /t:"Runtests" /p:Scope=Compute</code> In the above example <em>RunTests</em> will build and run tests for Compute only or you can use command line CLI <code>dotnet test Compute\Microsoft.Azure.Management.Compute\tests\Microsoft.Azure.Management.Tests.csproj</code></p> <h3 id="non-windows-command-line-build">Non-Windows command line build</h3> <p>Now you can use the same command on non-windows as above for e.g. on Ubuntu you can do something like below:</p> <ul> <li><code>dotnet msbuild eng\mgmt.proj /t:Build /p:scope=Compute</code></li> <li><code>dotnet msbuild eng\mgmt.proj /t:RunTests /p:scope=Compute</code></li> <li><code>dotnet msbuild eng\mgmt.proj /t:CreateNugetPackage /p:scope=Compute</code></li> <li><code>dotnet msbuild build.proj /t:Util /p:UtilityName=InstallPsModules</code></li> </ul> <h3 id="update-build-tools">Update build tools</h3> <p>Build tools are now downloaded as part of a nuget package under <code>root\restoredPackages\microsoft.internal.netsdkbuild.mgmt.tools</code> If for any reason there is an update to the build tools, you will then need to first delete directory <code>root\restoredPackages\microsoft.internal.netsdkbuild.mgmt.tools</code> and re-execute your build command. This will simply get the latest version of build tools.</p> <h1 id="client-libraries">Client Libraries</h1> <h2 id="to-build-1">TO BUILD:</h2> <h3 id="single-service-from-command-line-1">Single Service from Command Line</h3> <ol> <li>Open VS 2019 Command Prompt</li> <li>Navigate to service directory e.g. <em>"sdk\eventhub"</em></li> <li>Invoke <code>dotnet build</code></li> <li>or Build the <strong>service.proj</strong> in the repo root, passing the directory name of the specific service as a property. e.g. <code>dotnet build eng\service.proj /p:ServiceDirectory=eventhub</code></li> </ol> <h3 id="single-service-from-visual-studio">Single Service from Visual Studio</h3> <ol> <li>Open any data-plane solution e.g. <em>"sdk\eventhub\Microsoft.Azure.EventHubs.sln"</em></li> <li>Build solution from Visual Studio</li> </ol> <h3 id="all-client-services-from-command-line">All Client Services from Command Line</h3> <ol> <li>Open VS 2019 Command Prompt</li> <li>Navigate to repository root directory</li> <li>Invoke <code>dotnet build eng\service.proj</code></li> </ol> <h2 id="to-test-1">TO TEST:</h2> <h3 id="single-service-from-command-line-2">Single Service from Command Line</h3> <ol> <li>Open VS 2019 Command Prompt</li> <li>Navigate to service directory e.g. <em>"sdk\eventhub"</em></li> <li>Invoke <code>dotnet test --filter TestCategory!=Live</code> <em>(Skips live tests)</em></li> <li>or run test against <strong>service.proj</strong> in the repo root, passing the directory name of the specific service as a property. e.g. <code>dotnet test eng\service.proj /p:ServiceDirectory=eventhub --filter TestCategory!=Live</code></li> </ol> <h3 id="single-service-from-visual-studio-1">Single Service from Visual Studio</h3> <ol> <li>Build.</li> <li>Test Explorer window will get populated with tests. Select test and <code>Run</code> or <code>Debug</code></li> </ol> <h3 id="all-client-services-from-command-line-1">All Client Services from Command Line</h3> <ol> <li>Open VS 2019 Command Propmpt</li> <li>Navigate to repository root directory</li> <li>Invoke <code>dotnet test eng\service.proj --filter TestCategory!=Live</code> <br><br></li> </ol> <h3 id="testing-against-latest-versions-of-client-libraries">Testing Against Latest Versions of Client Libraries</h3> <p>In some cases, you might want to test against the latest versions of the client libraries. i.e. version not yet published to nuget. For this scenario you should make use of the <code>UseProjectReferenceToAzureClients</code> property which when set to <code>true</code> will switch all package references for client libraries present in the build to project references. This result in testing against the current version of the libraries in the repo. e.g. <code>dotnet test eng\service.proj /p:ServiceDirectory=eventhub --filter TestCategory!=Live /p:UseProjectReferenceToAzureClients=true</code></p> <h2 id="public-api-additions">Public API additions</h2> <p>If you make a public API addition, the <code>eng\Export-API.ps1</code> script has to be run to update public API listings.</p> <h2 id="api-compatibility-verification">API Compatibility Verification</h2> <p>.NET is using the <a href="https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.ApiCompat">ApiCompat tool</a> to enforce API compatibility between versions. Builds of GA'ed libraries will fail locally and in CI if there are breaking changes.</p> <h3 id="how-it-works">How it works</h3> <p>We use a dummy project called <a href="https://github.com/Azure/azure-sdk-for-net/tree/master/eng/ApiCompat/ApiCompat.csproj">ApiCompat</a> to enforce API compatibility between the GA'ed libraries and the most recent version available on Nuget. This project includes package references to all GA'ed libraries and to Microsoft.DotNet.ApiCompat. Each listed library package is restored from Nuget via the package references listed in the <code>ApiCompat.csproj</code> file, in combination with the version listed for that package in <a href="https://github.com/Azure/azure-sdk-for-net/blob/master/eng/Packages.Data.props">eng/Packages.Data.props</a>. The <code>ApiCompatVerification</code> target defined in <code>ApiCompat.csproj</code> is referenced in the <a href="https://github.com/Azure/azure-sdk-for-net/blob/master/eng/Directory.Build.Data.targets">eng/Directory.Build.Data.targets</a> which causes this target to be executed for each csproj that has the <code>EnableApiCompat</code> parameter set to true. The <code>EnableApiCompat</code> parameter defaults to the value of the <code>IsShippingClientLibrary</code> parameter, which is defined in <a href="https://github.com/Azure/azure-sdk-for-net/blob/master/eng/Directory.Build.Data.props">eng/Directory.Build.Data.props</a>.</p> <h3 id="adding-a-new-gaed-library">Adding a new GA'ed library</h3> <p>To include add a new GA'ed library in the <code>ApiCompatVerification</code> target, add a package reference for the library to the <code>ApiCompat.csproj</code> file. You will also need to include the latest GA version of the library in <a href="https://github.com/Azure/azure-sdk-for-net/blob/master/eng/Packages.Data.props">eng/Packages.Data.props</a>. Finally, include the <code>ApiCompat.csproj</code> in your solution so that the project will get automatically restored in Visual Studio.</p> <h3 id="releasing-a-new-version-of-a-gaed-libary">Releasing a new version of a GA'ed libary</h3> <p>Since the <a href="https://github.com/Azure/azure-sdk-for-net/blob/master/eng/Packages.Data.props">eng/Packages.Data.props</a> is currently maintained manually, you will need to update the version number for your library in this file when releasing a new version.</p> <h2 id="dev-feed">Dev Feed</h2> <p>We publish nightly built packages to a dev feed which can be consumed by adding the dev feed blob storage as a package source in Visual Studio.</p> <p>Follow instructions provided <a href="https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources">here</a> and use <code>https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-net/index.json</code> as the source.</p> <p>You can also achieve this from the command line.</p> <p><code>nuget.exe sources add -Name “Azure SDK for Net Dev Feed” -Source “https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-net/index.json”</code></p> <p>You can then consume packages from this package source, remember to check the <a href="https://docs.microsoft.com/en-us/nuget/create-packages/prerelease-packages#installing-and-updating-pre-release-packages">Include prerelease</a> box in Visual Studio when searching for the packages.</p> <h1 id="on-boarding-new-libraries">On-boarding New Libraries</h1> <h3 id="project-structure">Project Structure</h3> <p>In <code>sdk\< Service Name ></code>, you will find projects for services that have already been implemented</p> <ol> <li>Client library projects needs to use the $(RequiredTargetFrameworks) <em>(defined in eng/Directory.Build.Data.props)</em> property in its TargetFramework while management library projects should use $(SdkTargetFx) <em>(defined in AzSdk.reference.props)</em></li> <li>Projects of related packages are grouped together in a folder following the structure specified in <a href="https://github.com/Azure/azure-sdk/blob/master/docs/engineering-system/repo-structure.md">Repo Structure</a> <ul> <li>Client library packages are in a folder name like <strong><em>Microsoft.Azure.< ServiceName ></em></strong></li> <li>Management library packages are in a folder named like <strong><em>Microsoft.Azure.Management.< Resource Provider Name ></em></strong></li> </ul> </li> <li>Each shipping package contains a project for their <strong>generated</strong> and /or <strong>Customization</strong> code <ul> <li>The folder <strong>'Generated'</strong> contains the generated code</li> <li>The folder <strong>'Customizations'</strong> contains additions to the generated code - this can include additions to the generated partial classes, or additional classes that augment the SDK or call the generated code</li> <li>The file <strong>generate.cmd</strong>, used to generate library code for the given package, can also be found in this project</li> </ul> </li> </ol> <h3 id="standard-process">Standard Process</h3> <ol> <li>Create fork of <a href="https://github.com/azure/azure-rest-api-specs">Azure REST API Specs</a></li> <li>Create fork of <a href="https://github.com/azure/azure-sdk-for-net">Azure SDK for .NET</a></li> <li>Create your Swagger specification for your HTTP API. For more information see <a href="http://swagger.io">Introduction to Swagger - The World's Most Popular Framework for APIs</a></li> <li>Install the latest version of AutoRest and use it to generate your C# client. For more info on getting started with AutoRest, see the <a href="https://github.com/Azure/autorest">AutoRest repository</a></li> <li>Create a branch in your fork of Azure SDK for .NET and add your newly generated code to your project. If you don't have a project in the SDK yet, look at some of the existing projects and build one like the others.</li> <li><strong>MANDATORY</strong>: Add or update tests for the newly generated code.</li> <li>Once added to the Azure SDK for .NET, build your local package using <a href="#client-libraries">client</a> or <a href="#management-libraries">management</a> library instructions shown in the above sections.</li> <li>For management libraries run <code>eng\Update-Mgmt-Yml.ps1</code> to update PR include paths in <code>eng\pipelines\mgmt.yml</code></li> <li>A Pull request of your Azure SDK for .NET changes against <strong>master</strong> branch of the <a href="https://github.com/azure/azure-sdk-for-net">Azure SDK for .NET</a></li> <li>The pull requests will be reviewed and merged by the Azure SDK team</li> </ol> <h3 id="new-resource-provider">New Resource Provider</h3> <ol> <li>If you have never created an SDK for your service before, you will need the following things to get your SDK in the repo</li> <li>Follow the standard process described above.</li> <li>Project names helps in using basic heuristics in finding projects as well it's associated test projects during CI process.</li> <li>Create a new directory using the name of your service as specified in <a href="https://github.com/Azure/azure-rest-api-specs/tree/master/specification">azure-rest-api-specs/specification</a> Repo</li> <li>Follow the the directory structure below</li> </ol> <pre><code>sdk\<service name>\<package name>\README.md sdk\<service name>\<package name>\*src* sdk\<service name>\<package name>\*tests* sdk\<service name>\<package name>\*samples* </code></pre> <p>e.g.</p> <pre><code>sdk\eventgrid\Microsoft.Azure.EventGrid\src\Microsoft.Azure.EventGrid.csproj sdk\eventgrid\Microsoft.Azure.EventGrid\tests\Microsoft.Azure.EventGrid.Tests.csproj sdk\eventgrid\Microsoft.Azure.Management.EventGrid\src\Microsoft.Azure.Management.EventGrid.csproj sdk\eventgrid\Microsoft.Azure.Management.EventGrid\tests\Microsoft.Azure.Management.EventGrid.Tests.csproj </code></pre> <blockquote> <p>Ensure that your service name is the same as it is specified in the <a href="https://github.com/Azure/azure-rest-api-specs/tree/master/specification">azure-rest-api-specs/specification</a> Repo, that your csproj files starts with <strong>Microsoft.Azure</strong> , that test files end with <strong>.Tests</strong> and that management plane project files contain <strong>.Management.</strong> If you are adding a new service directory, ensure that it is mapped to a friendly name at <a href="https://github.com/Azure/azure-sdk-for-net/blob/8c1f53e9099bd5a674f9e77be7e4b1541cd6ab08/doc/ApiDocGeneration/Generate-DocIndex.ps1#L9-L64">ServiceMapping</a></p> </blockquote> <ol start="7"> <li><p>Copy .csproj from any other .csproj and update the following information in the new .csproj</p> <table> <thead> <tr> <th>Project Properties</th> </tr> </thead> <tbody> <tr> <td>AssemblyTitle</td> </tr> <tr> <td>Description</td> </tr> <tr> <td>VersionPrefix</td> </tr> <tr> <td>PackageTags</td> </tr> <tr> <td>PackageReleaseNotes</td> </tr> <tr> <td></td> </tr> </tbody> </table> </li> </ol> <blockquote> <p>PackageReleaseNotes are important because this information is displayed on <a href="http://www.nuget.org">www.nuget.org</a> when your nuget package is published</p> </blockquote> <ol start="8"> <li>Copy existing generate.ps1 file from another service and update the <code>ResourceProvider</code> name that is applicable to your SDK. Resource provider refers to the relative path of your REST spec directory in Azure-Rest-Api-Specs repository During SDK generation, this path helps to locate the REST API spec from the <code>https://github.com/Azure/azure-rest-api-specs</code></li> </ol> <h3 id="code-review-process">Code Review Process</h3> <p>Before a pull request will be considered by the Azure SDK team, the following requirements must be met:</p> <ul> <li>Prior to issuing the pull request: <ul> <li>All code must have completed any necessary legal signoff for being publicly viewable (Patent review, JSR review, etc.)</li> <li>The changes cannot break any existing functional/unit tests that are part of the central repository. <ul> <li>This includes all tests, even those not associated with the given feature area.</li> </ul> </li> <li>Code submitted must have basic unit test coverage, and have all the unit tests pass. Testing is the full responsibility of the service team <ul> <li>Functional tests are encouraged, and provide teams with a way to mitigate regressions caused by other code contributions.</li> </ul> </li> <li>Code should be commented.</li> <li>Code should be fully code reviewed.</li> <li>Code should be able to merge without any conflicts into the dev branch being targeted.</li> <li>Code should pass all relevant static checks and coding guidelines set forth by the specific repository.</li> <li>All build warnings and code analysis warnings should be fixed prior to submission.</li> </ul> </li> <li>As part of the pull request (aka, in the text box on GitHub as part of submitting the pull request): <ul> <li>Proof of completion of the code review and test passes requirements above.</li> <li>Identity of QA responsible for feature testing (can be conducted post-merging of the pull request).</li> <li>Short description of the payload of pull request.</li> </ul> </li> <li>After the pull request is submitted: <ul> <li>Our SLA is 48 hours. When your PR is submitted someone on our team will be auto assigned the PR for review. No need to email us</li> <li>MS internal folks, please reach out to us via our Teams channel or</li> <li>Send an email to the Azure Developer Platform team <a href="mailto:adpteam@microsoft.com">adpteam@microsoft.com</a> alias. <ul> <li>Include all interested parties from your team as well.</li> <li>In the message, make sure to acknowledge that the legal signoff process is complete.</li> </ul> </li> </ul> </li> </ul> <p>Once all of the above steps are met, the following process will be followed:</p> <ul> <li>A member of the Azure SDK team will review the pull request on GitHub.</li> <li>If the pull request meets the repository's requirements, the individual will approve the pull request, merging the code into the dev branch of the source repository. <ul> <li>The owner will then respond to the email sent as part of the pull request, informing the group of the completion of the request.</li> </ul> </li> <li>If the request does not meet any of the requirements, the pull request will not be merged, and the necessary fixes for acceptance will be communicated back to the partner team.</li> </ul> <h3 id="client-library-tested-oss-and-net-versions">Client Library Tested OSs and .NET Versions</h3> <table> <thead> <tr> <th></th> <th>Linux (Ubuntu 16.04)</th> <th>MacOS 10.13</th> <th>Windows Server 2016</th> </tr> </thead> <tbody> <tr> <td><strong>.NET Core 2.1</strong></td> <td>x</td> <td>x</td> <td>x</td> </tr> </tbody> </table> <h3 id="issues-with-generated-code">Issues with Generated Code</h3> <p>Much of the management plane SDK code is generated from metadata specs about the REST APIs. Do not submit PRs that modify generated code. Instead,</p> <ul> <li>File an issue describing the problem,</li> <li>Refer to the the <a href="https://github.com/azure/autorest">AutoRest project</a> to view and modify the generator, or</li> <li>Add additional methods, properties, and overloads to the SDK by adding classes in the 'Customizations' folder of a project</li> </ul> <h2 id="versioning">Versioning</h2> <p>For more information on how we version see <a href="doc/dev/Versioning.md">Versioning</a></p> <h2 id="breaking-changes">Breaking Changes</h2> <p>For information about breaking changes see <a href="https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/breaking-change-rules.md">Breaking Change Rules</a></p> </article> </div> <div class="hidden-sm col-md-2" role="complementary"> <div class="sideaffix"> <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix"> </nav> </div> </div> </div> </div> <footer> <div class="grad-bottom"></div> <div class="footer"> <div class="container"> <span class="pull-right"> <a href="#top">Back to top</a> </span> Azure SDK for Net </div> </div> </footer> </div> <script type="text/javascript" src="styles/docfx.vendor.js"></script> <script type="text/javascript" src="styles/docfx.js"></script> <script type="text/javascript" src="styles/main.js"></script> </body> </html>
About
This repository is for active development of the Azure SDK for .NET. For consumers of the SDK we recommend visiting our public developer docs at https://docs.microsoft.com/en-us/dotnet/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-net.
License
Contributing
Security policy
Stars
Watchers
Forks
Packages 0
No packages published
Languages
- C# 98.3%
- PowerShell 0.7%
- HTML 0.6%
- TypeScript 0.4%
- Batchfile 0.0%
- Shell 0.0%