Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Visa eller ladda ned exempelkod (hur du laddar ned)
En programdel är en abstraktion över resurserna i en app. Med programdelar kan ASP.NET Core identifiera styrenheter, visa komponenter, tag helpers, Razor Pages, rakbladskompileringskällor med mera. 
              AssemblyPart är en programdel. 
              AssemblyPart kapslar in en sammansättningsreferens och exponerar typer och kompileringsreferenser.
Funktionsprovidrar arbetar med applikationsdelar för att populera funktionerna i en ASP.NET Core-app. Det huvudsakliga användningsfallet för programdelar är att konfigurera en app för att identifiera (eller undvika inläsning) ASP.NET Core-funktioner från en sammansättning. Du kanske till exempel vill dela gemensamma funktioner mellan flera appar. Med hjälp av programdelar (Application Parts) kan du dela en DLL-fil som innehåller styrenheter, vyer, Razor-sidor, källkoder för Razor-kompilering, Tag Helpers och mer med flera appar. Att dela en sammansättning är att föredra för att duplicera kod i flera projekt.
ASP.NET Core-appar läser in funktioner från ApplicationPart. Klassen AssemblyPart representerar en programdel som backas upp av en sammansättning.
Läs in ASP.NET Core-funktioner
Använd klasserna Microsoft.AspNetCore.Mvc.ApplicationParts och AssemblyPart för att identifiera och läsa in ASP.NET Core-funktioner (styrenheter, visa komponenter osv.). 
              ApplicationPartManager spårar programdelarna och funktionsprovidrar som är tillgängliga. 
              ApplicationPartManager har konfigurerats i Startup.ConfigureServices:
// Requires using System.Reflection;
public void ConfigureServices(IServiceCollection services)
{
    var assembly = typeof(MySharedController).Assembly;
    services.AddControllersWithViews()
        .AddApplicationPart(assembly)
        .AddRazorRuntimeCompilation();
    services.Configure<MvcRazorRuntimeCompilationOptions>(options => 
    { options.FileProviders.Add(new EmbeddedFileProvider(assembly)); });
}
Följande kod ger en alternativ metod för att konfigurera ApplicationPartManager med hjälp av AssemblyPart:
// Requires using System.Reflection;
// Requires using Microsoft.AspNetCore.Mvc.ApplicationParts;
public void ConfigureServices(IServiceCollection services)
{
    var assembly = typeof(MySharedController).Assembly;
    // This creates an AssemblyPart, but does not create any related parts for items such as views.
    var part = new AssemblyPart(assembly);
    services.AddControllersWithViews()
        .ConfigureApplicationPartManager(apm => apm.ApplicationParts.Add(part));
}
De föregående två kodexemplen läser in SharedController från en sammansättning. 
              SharedController finns inte i appens projekt. Se exempelnedladdningen för WebAppParts-lösningen.
Inkludera vyer
Använd ett Razor klassbibliotek för att inkludera vyer i sammansättningen.
Förhindra inläsning av resurser
Programdelar kan användas för att undvika inläsning av resurser på en viss sammansättning eller plats. Lägg till eller ta bort medlemmar i Microsoft.AspNetCore.Mvc.ApplicationParts-samlingen för att dölja eller göra tillgängliga resurser. Ordningen på posterna i ApplicationParts-samlingen är inte viktig. Konfigurera ApplicationPartManager innan du använder den för att konfigurera tjänster i containern. Konfigurera till exempel ApplicationPartManager innan du anropar AddControllersAsServices. Anropa Remove i samlingen ApplicationParts för att ta bort en resurs.
              ApplicationPartManager innehåller delar för:
- Appens sammansättning och beroende sammansättningar.
- Microsoft.AspNetCore.Mvc.ApplicationParts.CompiledRazorAssemblyPart
- Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
- 
              Microsoft.AspNetCore.Mvc.TagHelpers.
- 
              Microsoft.AspNetCore.Mvc.Razor.
Funktionsprovidrar
Programfunktionsleverantörer undersöker programdelar och tillhandahåller funktioner för dessa delar. Det finns inbyggda funktionsprovidrar för följande ASP.NET Core-funktioner:
- ControllerFeatureProvider
- TagHelperFeatureProvider
- MetadataReferenceFeatureProvider
- ViewsFeatureProvider
- 
              internal classRazorCompiledItemFeatureProvider
Funktionsprovidrar ärver från IApplicationFeatureProvider<TFeature>, där T är funktionens typ. Funktionsprovidrar kan implementeras för någon av de tidigare listade funktionstyperna. Ordningen på funktionsprovidrar i ApplicationPartManager.FeatureProviders kan påverka körningstidsbeteendet. Senare tillagda leverantörer kan reagera på åtgärder som vidtagits av tidigare tillagda leverantörer.
Visa tillgängliga funktioner
Funktionerna som är tillgängliga för en app kan listas genom att begära en ApplicationPartManager via beroendeinjektion:
using AppPartsSample.ViewModels;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Microsoft.AspNetCore.Mvc.Controllers;
using System.Linq;
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
using Microsoft.AspNetCore.Mvc.Razor.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewComponents;
namespace AppPartsSample.Controllers
{
    public class FeaturesController : Controller
    {
        private readonly ApplicationPartManager _partManager;
        public FeaturesController(ApplicationPartManager partManager)
        {
            _partManager = partManager;
        }
        public IActionResult Index()
        {
            var viewModel = new FeaturesViewModel();
            var controllerFeature = new ControllerFeature();
            _partManager.PopulateFeature(controllerFeature);
            viewModel.Controllers = controllerFeature.Controllers.ToList();
            var tagHelperFeature = new TagHelperFeature();
            _partManager.PopulateFeature(tagHelperFeature);
            viewModel.TagHelpers = tagHelperFeature.TagHelpers.ToList();
            var viewComponentFeature = new ViewComponentFeature();
            _partManager.PopulateFeature(viewComponentFeature);
            viewModel.ViewComponents = viewComponentFeature.ViewComponents.ToList();
            return View(viewModel);
        }
    }
}
nedladdningsexempel använder föregående kodavsnitt för att visa upp appens funktioner:
Controllers:
    - FeaturesController
    - HomeController
    - HelloController
    - GenericController`1
    - GenericController`1
Tag Helpers:
    - PrerenderTagHelper
    - AnchorTagHelper
    - CacheTagHelper
    - DistributedCacheTagHelper
    - EnvironmentTagHelper
    - Additional Tag Helpers omitted for brevity.
View Components:
    - SampleViewComponent
Upptäckt i applikationsdelar
HTTP 404-fel är inte ovanliga när du utvecklar med programdelar. Dessa fel orsakas vanligtvis av att ett viktigt krav saknas för hur programdelar identifieras. Om din app returnerar ett HTTP 404-fel kontrollerar du att följande krav har uppfyllts:
- Inställningen applicationNamemåste anges till den rotsammansättning som används för upptäckt. Rotsammansättningen som används för identifiering är normalt startpunktssammansättningen.
- Rotsammansättningen måste ha en referens till de delar som används för identifiering. Referensen kan vara direkt eller transitiv.
- Rotsammansättningen måste referera till Web SDK. Ramverket har logik som stämplar attribut i rotsammansättningen som används för identifiering.
Visa eller ladda ned exempelkod (hur du laddar ned)
En programdel är en abstraktion över resurserna i en app. Med programdelar kan ASP.NET Core identifiera styrenheter, visa komponenter, tag helpers, Razor Pages, rakbladskompileringskällor med mera. 
              AssemblyPart är en programdel. 
              AssemblyPart kapslar in en sammansättningsreferens och exponerar typer och kompileringsreferenser.
Funktionsprovidrar arbetar med applikationsdelar för att populera funktionerna i en ASP.NET Core-app. Det huvudsakliga användningsfallet för programdelar är att konfigurera en app för att identifiera (eller undvika inläsning) ASP.NET Core-funktioner från en sammansättning. Du kanske till exempel vill dela gemensamma funktioner mellan flera appar. Med hjälp av programdelar (Application Parts) kan du dela en DLL-fil som innehåller styrenheter, vyer, Razor-sidor, källkoder för Razor-kompilering, Tag Helpers och mer med flera appar. Att dela en sammansättning är att föredra för att duplicera kod i flera projekt.
ASP.NET Core-appar läser in funktioner från ApplicationPart. Klassen AssemblyPart representerar en programdel som backas upp av en sammansättning.
Läs in ASP.NET Core-funktioner
Använd klasserna ApplicationPart och AssemblyPart för att identifiera och läsa in ASP.NET Core-funktioner (styrenheter, visa komponenter osv.). 
              ApplicationPartManager spårar programdelarna och funktionsprovidrar som är tillgängliga. 
              ApplicationPartManager har konfigurerats i Startup.ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
    // Requires using System.Reflection;
    var assembly = typeof(MySharedController).GetTypeInfo().Assembly;
    services.AddMvc()
        .AddApplicationPart(assembly)
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Följande kod ger en alternativ metod för att konfigurera ApplicationPartManager med hjälp av AssemblyPart:
public void ConfigureServices(IServiceCollection services)
{
    // Requires using System.Reflection;
    // Requires using Microsoft.AspNetCore.Mvc.ApplicationParts;
    var assembly = typeof(MySharedController).GetTypeInfo().Assembly;
    var part = new AssemblyPart(assembly);
    services.AddMvc()
        .ConfigureApplicationPartManager(apm => apm.ApplicationParts.Add(part))
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
De föregående två kodexemplen läser in SharedController från en sammansättning. 
              SharedController finns inte i programmets projekt. Se exempelnedladdningen för WebAppParts-lösningen.
Inkludera vyer
Använd ett Razor klassbibliotek för att inkludera vyer i sammansättningen.
Förhindra inläsning av resurser
Programdelar kan användas för att undvika inläsning av resurser på en viss sammansättning eller plats. Lägg till eller ta bort medlemmar i Microsoft.AspNetCore.Mvc.ApplicationParts-samlingen för att dölja eller göra tillgängliga resurser. Ordningen på posterna i ApplicationParts-samlingen är inte viktig. Konfigurera ApplicationPartManager innan du använder den för att konfigurera tjänster i containern. Konfigurera till exempel ApplicationPartManager innan du anropar AddControllersAsServices. Anropa Remove i samlingen ApplicationParts för att ta bort en resurs.
Följande kod använder Microsoft.AspNetCore.Mvc.ApplicationParts för att ta bort MyDependentLibrary från appen:
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
            .ConfigureApplicationPartManager(apm =>
            {
                var dependentLibrary = apm.ApplicationParts
                    .FirstOrDefault(part => part.Name == "MyDependentLibrary");
                if (dependentLibrary != null)
                {
                    apm.ApplicationParts.Remove(dependentLibrary);
                }
            });
}
              ApplicationPartManager innehåller delar för:
- Appens sammansättning och beroende sammansättningar.
- 
              Microsoft.AspNetCore.Mvc.TagHelpers.
- 
              Microsoft.AspNetCore.Mvc.Razor.
Programfunktionsprovidrar
Programfunktionsleverantörer undersöker programdelar och tillhandahåller funktioner för dessa delar. Det finns inbyggda funktionsprovidrar för följande ASP.NET Core-funktioner:
Funktionsprovidrar ärver från IApplicationFeatureProvider<TFeature>, där T är funktionens typ. Funktionsprovidrar kan implementeras för någon av de tidigare listade funktionstyperna. Ordningen på funktionsprovidrar i ApplicationPartManager.FeatureProviders kan påverka körningstidsbeteendet. Senare tillagda leverantörer kan reagera på åtgärder som vidtagits av tidigare tillagda leverantörer.
Visa tillgängliga funktioner
Funktionerna som är tillgängliga för en app kan listas genom att begära en ApplicationPartManager via beroendeinjektion:
using AppPartsSample.ViewModels;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Microsoft.AspNetCore.Mvc.Controllers;
using System.Linq;
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
using Microsoft.AspNetCore.Mvc.Razor.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewComponents;
namespace AppPartsSample.Controllers
{
    public class FeaturesController : Controller
    {
        private readonly ApplicationPartManager _partManager;
        public FeaturesController(ApplicationPartManager partManager)
        {
            _partManager = partManager;
        }
        public IActionResult Index()
        {
            var viewModel = new FeaturesViewModel();
            var controllerFeature = new ControllerFeature();
            _partManager.PopulateFeature(controllerFeature);
            viewModel.Controllers = controllerFeature.Controllers.ToList();
            var tagHelperFeature = new TagHelperFeature();
            _partManager.PopulateFeature(tagHelperFeature);
            viewModel.TagHelpers = tagHelperFeature.TagHelpers.ToList();
            var viewComponentFeature = new ViewComponentFeature();
            _partManager.PopulateFeature(viewComponentFeature);
            viewModel.ViewComponents = viewComponentFeature.ViewComponents.ToList();
            return View(viewModel);
        }
    }
}
nedladdningsexempel använder föregående kodavsnitt för att visa upp appens funktioner:
Controllers:
    - FeaturesController
    - HomeController
    - HelloController
    - GenericController`1
    - GenericController`1
Tag Helpers:
    - PrerenderTagHelper
    - AnchorTagHelper
    - CacheTagHelper
    - DistributedCacheTagHelper
    - EnvironmentTagHelper
    - Additional Tag Helpers omitted for brevity.
View Components:
    - SampleViewComponent
Upptäckt i applikationsdelar
HTTP 404-fel är inte ovanliga när du utvecklar med programdelar. Dessa fel orsakas vanligtvis av att ett viktigt krav saknas för hur programdelar identifieras. Om din app returnerar ett HTTP 404-fel kontrollerar du att följande krav har uppfyllts:
- Inställningen applicationNamemåste anges till den rotsammansättning som används för upptäckt. Rotsammansättningen som används för identifiering är normalt startpunktssammansättningen.
- Rotsammansättningen måste ha en referens till de delar som används för identifiering. Referensen kan vara direkt eller transitiv.
- Rotsammansättningen måste referera till Web SDK.
- ASP.NET Core-ramverket har anpassad bygglogik som stämplar attribut i rotsammansättningen som används för identifiering.
 
ASP.NET Core