Codefragmenten

In OPS worden codefragmenten in regels, kleuren, taalselectors en externe codefragmenten ondersteund.

Selecteerde de koppeling Bewerken om de inhoud van dit artikel in Markdown te zien.

Interne codefragmenten

U kunt naar codefragmenten die in uw opslagplaats zijn opgeslagen verwijzen door de opgegeven codetaal te gebruiken. De inhoud van het opgegeven codepad wordt uitgebreid en in uw bestand opgenomen.

We hebben geen beperkingen ten aanzien van de mappenstructuur van codefragmenten. U kunt de codefragmenten beheren als normale broncode.

Syntaxis:

[!code-<language>[<name>](<codepath><queryoption><queryoptionvalue> "<title>")]

Belangrijk

Deze syntaxis is een Markdown-blokextensie. Deze moet op zijn eigen regel worden gebruikt.

  • -<language> (optioneel)
    • Taal van het codefragment. Zie de sectie Ondersteunde talen in dit artikel voor de lijst met talen die worden ondersteund op docs.microsoft.com.
    • Vergeet het koppelteken (-) niet voor de naam van de taal.
  • <name>( optioneel)

    • Naam van het codefragment. Deze heeft geen invloed op het HTML-resultaat, maar u kunt deze gebruiken om de leesbaarheid van uw Markdown-bron te verbeteren. Hij wordt toegevoegd om compatibel te zijn met de normale koppelingssyntaxis van Markdown en wordt dus gewoon weergegeven als een koppeling in een Markdown-parser die geen OPS-syntaxis ondersteunt (zoals GitHub).
  • <codepath>(verplichte)

    • Relatief pad naar het bestandssysteem dat het codefragmentbestand aangeeft waarnaar moet worden verwezen.
  • <queryoption>en <queryoptionvalue>(optioneel)

    • Worden samen gebruikt om op te geven hoe de code uit het bestand moet worden opgehaald:

      • #: #L{startlinenumber}-L{endlinenumber} (regelbereik) of #{tagname} (naam van de tag)
      • ?: ?start={startlinenumber}&end={endlinenumber} (regelbereik) of ?name={tagname} (naam van de tag)
      • range: ?range=1,3-5 Een bereik met regels. Dit voorbeeld bevat regels 1, 3, 4 en 5.
      • dedent: ?dedent=8 Springt de regels in met een aantal spaties--in dit geval 8. Dit kan worden gecombineerd met de range en andere queryopties die een subset van de regels van een bestand selecteren.
      • outdent: ?outdent=8 Keert de inspringing van de regels om met een aantal spaties--in dit geval 8. Dit kan worden gecombineerd met range en andere queryopties die een subset van de regels van een bestand selecteren.

      Zie de DocFX-richtlijnen voor details over weergave van tagnamen in bronbestanden van codefragmenten per taal.

  • <title>( optioneel)
    • Titel van het codefragment. Deze heeft geen invloed op het HTML-resultaat, maar u kunt deze gebruiken om de leesbaarheid van uw Markdown-bron te verbeteren. Hij wordt toegevoegd om compatibel te zijn met de normale koppelingssyntaxis van Markdown en wordt dus gewoon weergegeven als een koppeling in een Markdown-parser die geen OPS-syntaxis ondersteunt (zoals GitHub).

Voorbeeld van een codefragment

[!code-csharp[Main](Program.cs)]

[!code[Main](Program.cs#L12-L16 "This is source file")]
[!code-vb[Main](../Application/Program.vb#testsnippet "This is source file")]

[!code[Main](index.xml?start=5&end=9)]
[!code-javascript[Main](../jquery.js?name=testsnippet)]

Externe codefragmenten

U kunt naar codefragmenten verwijzen die in een externe opslagplaats zijn opgeslagen -- een andere opslagplaats dan diegene waarin uw artikel zich bevindt. U gebruikt een methode die vergelijkbaar is met de methode voor een intern codefragment, met twee aanvullende vereisten:

  • De externe opslagplaats toevoegen aan het configuratiebestand voor opslagplaats

    Om naar een externe opslagplaats te verwijzen, moet u deze eerst toevoegen aan de verzameling dependent_repositories in het .openpublishing.publish.config.json-bestand van uw opslagplaats; dit is te vinden in de hoofdmap van uw opslagplaats. De indeling is als volgt:

    {
      "path_to_root": "name-of-repo",
      "url": "https://github.com/path/to/repo.git",
      "branch": "master"
    }
    

    Als u bijvoorbeeld code uit azure-storage-net wilt opnemen in een artikel in azure-docs-pr, moet u het volgende toevoegen aan het dependent_repositories-gedeelte in .openpublishing.publish.config.json van azure-docs-pr:

    {
      "path_to_root": "azure-storage-net",
      "url": "https://github.com/Azure/azure-storage-net.git",
      "branch": "master"
    }
    
  • Codepad<, afhankelijk van voorvoegsel>, met bijvoorbeeld ../../

    U kunt nu naar azure-storage-net verwijzen in <codepath>. Gebruik een relatief pad om het codefragment op te nemen op basis van de mappenstructuur van zowel de opslagplaats voor inhoud als de opslagplaats voor fragmenten.

Nu u de afhankelijke opslagplaats aan het configuratiebestand hebt toegevoegd, kunt u de volgende indeling gebruiken om naar codefragmenten te verwijzen:

[!code-language[name](../../repo-path-root/path/to/file.cs#TagName "Title")]

Een verwijzing voor het voorgaande voorbeeld voor azure-storage-net kan er als volgt uitzien:

[!code-csharp[tableinsert](../../azure-storage-net/Test/WindowsRuntime/Table/TableBatchOperationTest.cs#Insert "Table insert")]

Belangrijk

Als een extern codefragment wordt bijgewerkt, wordt niet automatisch met het samenstellen van inhoud gestart. U moet een build daarom activeren door iets in de opslagplaats voor documenten te wijzigen of door een build handmatig te starten.

Codefragmenten met tabbladen

Belangrijk

Deze functie werkt alleen voor sites zonder documenten (MSDN, TechNet en visualstudio.com).

U kunt meerdere codefragmenten groeperen, zodat lezers deze op verschillende tabbladen zien kunnen. Codefragmenten met tabbladen werken voor codefragmenten in regels en voor externe codefragmenten.

Notitie

Als uw tabbladen met code niet naar verwachting worden weergegeven, controleert u of de tags aan het begin en einde van de code (```) naar links zijn georiƫnteerd en niet zijn ingekapseld.

Voorbeeld:

> [!div class="tabbedCodeSnippets"]
```cs
  var outlookClient = await CreateOutlookClientAsync("Calendar");
  var events = await outlookClient.Me.Events
    .Take(10)
    .ExecuteAsync();
  foreach(var calendarEvent in events.CurrentPage)
  {
    System.Diagnostics.Debug.WriteLine("Event '{0}'.", calendarEvent.Subject);
  }
```
```javascript
  outlookClient.me.events.getEvents().fetch().then(function (result) {
      result.currentPage.forEach(function (event) {
  console.log('Event "' + event.subject + '"')
      });
  }, function(error) {
      console.log(error);
  });
```

Deze syntaxis wordt weergegeven als codefragmenten met tabbladen in MSDN, TechNet en visualstudio.com. Het wordt niet weergegeven als codefragmenten met tabbladen in OPS-documentatie of op docs.microsoft.com, omdat de sjabloon dit niet ondersteunt.

  var outlookClient = await CreateOutlookClientAsync("Calendar");
  var events = await outlookClient.Me.Events
    .Take(10)
    .ExecuteAsync();
  foreach(var calendarEvent in events.CurrentPage)
  {
    System.Diagnostics.Debug.WriteLine("Event '{0}'.", calendarEvent.Subject);
  }
  outlookClient.me.events.getEvents().fetch().then(function (result) {
      result.currentPage.forEach(function (event) {
  console.log('Event "' + event.subject + '"')
      });
  }, function(error) {
      console.log(error);
  });

Merk op dat u de naam van het tabblad kunt opgeven als cs='C#'. Het is optioneel voor bekende talen als C#, C++ en JavaScript. Voor een onbekende taal kan de naam van het tabblad alleen worden weergegeven als de toewijzing is opgegeven in het element div. Om de tabbladnamen correct weer te geven, is de functie afhankelijk van de implementatie van de front-end.

> [!div class="tabbedCodeSnippets" cs='C#' javascript='Javascript']

Interactieve codefragmenten

Notitie

Deze functie is alleen beschikbaar op docs.microsoft.com.

Bepaalde talen kunnen interactief worden gemaakt, zodat het codefragment vanuit het browservenster kan worden uitgevoerd.

Op dit moment kunnen we interactieve ervaringen inschakelen voor:

  • Azure Cloud Shell
  • Azure PowerShell Cloud Shell
  • C# REPL

Codevoorbeelden waarvoor dit is ingeschakeld, hebben nu een knop Proberen. Wanneer u deze knop activeert, wordt de interactieve ervaring voor het voorbeeld ingeschakeld. Hier volgt een voorbeeld:

az group create --name myResourceGroup --location westeurope

Als u deze functie voor een bepaald codeblok inschakelt, moet u een speciale taal-id gebruiken. Hierboven hebben we azurecli-interactive gebruikt om de Azure Cloud Shell in te schakelen. De beschikbare opties zijn:

  • azurecli-interactive - Schakelt de Azure Cloud Shell in
  • csharp-interactive-Schakelt de C# REPL in
  • azurepowershell-interactive - Schakelt de Azure PowerShell Cloud Shell in

Voor de Azure Cloud Shell en PowerShell Cloud Shell hebben we een ervaring gebouwd die een verificatie voor klanten vereenvoudigt zodat ze opdrachten kunnen uitvoeren tegen alleen hun eigen Azure-account. Dit werk is verricht als onderdeel van een samenwerking met het Azure Cloud Shell-team.

U moet voor een specifiek codeblok de taal azurecli-interactive gebruiken in plaats van azurecli om deze functie in te schakelen. Hier volgt de opmaak voor het voorgaande voorbeeld:

```azurecli-interactive
az group create --name myResourceGroup --location westeurope
```

U kunt interactief ook inschakelen om blokken op te nemen. Dat ziet er zo uit:

[!code-azurecli-interactive[main](../../../cli_scripts/virtual-machine/create-docker-host/create-docker-host.sh "Docker Host")

Ondersteunde talen

Codeblokken in regels

Naam Markdown-label
Azure CLI azurecli
AzCopy azcopy
C++ cpp
C# csharp
F# fsharp
Java java
JavaScript javascript
JSON json
NodeJS nodejs
Objective-C objc
PHP php
PowerShell powershell
Python python
Ruby ruby
SQL sql
Swift swift
VB vb
XAML xaml
XML xml

Code-extensies

Naam Markdown-label Bestandsextensie
C# csharp .cs
C++ cpp .cpp, .h
F# fsharp .fs
Java java .java
JavaScript javascript .js
Python python .py
SQL sql .sql
VB vb .vb
XAML xaml .xmal
XML xml .xml