Delen via


Een C#-projectie genereren op basis van een C++/WinRT-onderdeel, distribueren als een NuGet voor .NET-apps

In dit onderwerp wordt uitgelegd hoe u C#/WinRT- gebruikt om een C# .NET-projectieassembly (of interop-assembly) te genereren vanuit een C++/WinRT Windows Runtime-onderdeel, en deze te distribueren als een NuGet-pakket voor .NET-toepassingen.

In .NET 6 en hoger wordt het verbruik van WinMD-bestanden (Windows-metagegevens) niet meer ondersteund (zie ingebouwde ondersteuning voor WinRT wordt verwijderd uit .NET). In plaats daarvan kan het hulpprogramma C#/WinRT worden gebruikt om een projectieassembly te genereren voor elk WinMD-bestand, waarmee vervolgens het verbruik van WinRT-onderdelen van .NET-toepassingen mogelijk wordt gemaakt. Een projectie-assembly wordt ook wel een interop-assembly genoemd. Deze handleiding laat zien hoe u het volgende doet:

  • Gebruik het C#/WinRT-pakket om een C#-projectie te genereren op basis van een C++/WinRT-onderdeel.
  • Distribueer het onderdeel, samen met de projectieassembly, als een NuGet-pakket.
  • Het NuGet-pakket gebruiken vanuit een .NET-consoletoepassing.

Vereiste voorwaarden

Voor dit scenario en het bijbehorende voorbeeld zijn de volgende hulpprogramma's en onderdelen vereist:

  • Visual Studio 2022 (of Visual Studio 2019) waarop de universal Windows Platform-ontwikkelworkload is geïnstalleerd. Schakel in Installation Details>Universal Windows Platform developmentde C++ (v14x) Universal Windows Platform tools optie.
  • .NET 6.0 SDK of hoger.

Visual Studio 2019 alleen. De extensie C++/WinRT VSIX, waarmee u C++/WinRT-projectsjablonen in Visual Studio krijgt. De projectsjablonen zijn ingebouwd in Visual Studio 2022.

In dit scenario gebruiken we Visual Studio 2022 en .NET 6.

Belangrijk

U moet ook de voorbeeldcode voor dit onderwerp downloaden of klonen vanuit het C#/WinRT-projectievoorbeeld op GitHub. Ga naar CsWinRT-en klik op de groene knop Code om de git clone url te verkrijgen. Lees het README.md-bestand voor het voorbeeld.

Een eenvoudig C++/WinRT Windows Runtime-onderdeel maken

Als u deze procedure wilt volgen, moet u eerst een C++/WinRT Windows Runtime-onderdeel (WRC) hebben waaruit de C#-projectieassembly moet worden gegenereerd.

In dit scenario wordt gebruikgemaakt van het SimpleMathComponent WRC uit het C#/WinRT-projectievoorbeeld op GitHub, dat u al hebt gedownload of gekloond. SimpleMathComponent is gemaakt op basis van de Visual Studio-projectsjabloon voor Het Windows Runtime-onderdeel (C++/WinRT) (die wordt geleverd met Visual Studio 2022 of met de extensie C++/WinRT VSIX).

Als u het SimpleMathComponent-project in Visual Studio wilt openen, opent u het \CsWinRT\src\Samples\NetProjectionSample\CppWinRTComponentProjectionSample.sln bestand dat u vindt in uw download of kloon van de opslagplaats.

De code in dit project biedt de functionaliteit voor de basisberekeningsbewerkingen die worden weergegeven in het onderstaande headerbestand.

// SimpleMath.h
...
namespace winrt::SimpleMathComponent::implementation
{
    struct SimpleMath: SimpleMathT<SimpleMath>
    {
        SimpleMath() = default;
        double add(double firstNumber, double secondNumber);
        double subtract(double firstNumber, double secondNumber);
        double multiply(double firstNumber, double secondNumber);
        double divide(double firstNumber, double secondNumber);
    };
}

U kunt controleren of de eigenschap Compatibel met Windows Desktop is ingesteld op Ja voor het onderdeelproject SimpleMathComponent C++/WinRT Windows Runtime. Hiervoor stelt u in de projecteigenschappen voor SimpleMathComponent, onderStandaardinstellingen voor algemene>projecteigenschappen>, de eigenschap Windows Desktop compatibel metJa in. Dit zorgt ervoor dat de juiste binaire runtimebestanden worden geladen voor het gebruik van .NET-desktop-apps.

pagina met bureaublad-compatibele eigenschappen

Zie Windows Runtime-onderdelen met C++/WinRT voor meer gedetailleerde stappen over het maken van een C++/WinRT-onderdeel en het genereren van een WinMD-bestand.

Opmerking

Als u IInspectable::GetRuntimeClassName in uw component implementeert, dan moet het een geldige WinRT-klassenaam teruggeven. Omdat C#/WinRT de klassenaamtekenreeks voor interop gebruikt, genereert een onjuiste runtimeklassenaam een InvalidCastException.

Een projectieproject toevoegen aan de onderdeeloplossing

Eerst, met de CppWinRTComponentProjectionSample oplossing die nog steeds in Visual Studio is geopend, verwijder het SimpleMathProjection project uit die oplossing. Verwijder vervolgens de map SimpleMathProjection uit uw bestandssysteem (of wijzig desgewenst de naam ervan). Deze stappen zijn nodig, zodat u deze stapsgewijze instructies kunt volgen.

  1. Voeg een nieuw C#-bibliotheekproject toe aan uw oplossing.

    1. Klik in Solution Explorer met de rechtermuisknop op het oplossingsknooppunt en klik opNieuw project>.
    2. Typ in het dialoogvenster Een nieuw project toevoegenClass Library in het zoekvak. Kies C# in de taallijst en kies Vervolgens Windows in de platformlijst. Kies de C#-projectsjabloon die gewoon Klassebibliotheek wordt genoemd (zonder voorvoegsels of achtervoegsels) en klik op Volgende.
    3. Geef het nieuwe project de naam SimpleMathProjection. De locatie moet al zijn ingesteld op dezelfde \CsWinRT\src\Samples\NetProjectionSample map waarin de map SimpleMathComponent zich bevindt, maar bevestig dat. Klik vervolgens op Volgende.
    4. Selecteer op de pagina Aanvullende informatie.NET 6.0 (langetermijnondersteuning), en kies vervolgens Maken.
  2. Verwijder het stub-Class1.cs-bestand uit het project.

  3. Gebruik de onderstaande stappen om het C#/WinRT NuGet-pakket te installeren.

    1. Klik in Solution Explorer met de rechtermuisknop op uw SimpleMathProjection-project en selecteer NuGet-pakketten beheren.
    2. Typ Microsoft.Windows.CsWinRT in het zoekvak of plak het daarin op het tabblad Bladeren. Zoek in de resultaten naar het item met de nieuwste versie en klik op Installeren om het pakket te installeren in het SimpleMathProjection project.
  4. Voeg een projectreferentie toe aan SimpleMathProjection naar het SimpleMathComponent-project . Klik in Solution Explorer met de rechtermuisknop op het knooppunt Afhankelijkheden onder het projectknooppunt SimpleMathProjection, selecteer Projectverwijzing toevoegen en selecteer het SimpleMathComponent-project>OK.

Probeer het project nog niet te bouwen. Dat doen we in een latere stap.

Tot nu toe moet uw Solution Explorer er ongeveer als volgt uitzien (uw versienummers zijn anders).

Solution Explorer met projectieprojectafhankelijkheden

Projecten buiten de bron bouwen

Voor de CppWinRTComponentProjectionSample-oplossing in het C#/WinRT-projectievoorbeeld (dat u hebt gedownload of gekloond vanuit GitHub en nu zijn geopend), wordt de build-uitvoerlocatie geconfigureerd met het bestand Directory.Build.props om uit de bron te bouwen. Dit betekent dat bestanden uit de build-uitvoer buiten de bronmap worden gegenereerd. We raden u aan om uit de bron te bouwen wanneer u het C#/WinRT-hulpprogramma gebruikt. Dit voorkomt dat de C#-compiler per ongeluk alle *.cs bestanden onder de hoofdmap van het project ophaalt, waardoor dubbele typefouten kunnen optreden (bijvoorbeeld bij het compileren van meerdere configuraties en/of platforms).

Hoewel dit al is geconfigureerd voor de CppWinRTComponentProjectionSample-oplossing , volgt u de onderstaande stappen om de configuratie voor uzelf uit te voeren.

Uw oplossing configureren om uit de bron te bouwen:

  1. Zorg dat de CppWinRTComponentProjectionSample oplossing nog steeds open is. Klik met de rechtermuisknop op het oplossingsknooppunt en selecteer Toevoegen>Nieuw item. Selecteer het XML-bestandsitem en geef het de naam Directory.Build.props (zonder een .xml-extensie). Klik op Ja als u het bestaande bestand wilt overschrijven.

  2. Vervang de inhoud van Directory.Build.props door de onderstaande configuratie.

    <Project>
      <PropertyGroup>
        <BuildOutDir>$([MSBuild]::NormalizeDirectory('$(SolutionDir)', '_build', '$(Platform)', '$(Configuration)'))</BuildOutDir>
        <OutDir>$([MSBuild]::NormalizeDirectory('$(BuildOutDir)', '$(MSBuildProjectName)', 'bin'))</OutDir>
        <IntDir>$([MSBuild]::NormalizeDirectory('$(BuildOutDir)', '$(MSBuildProjectName)', 'obj'))</IntDir>
      </PropertyGroup>
    </Project>
    
  3. Sla het bestand Directory.Build.props op en sluit het.

Bewerk het projectbestand om C#/WinRT uit te voeren

Voordat u het cswinrt.exe hulpprogramma kunt aanroepen om de projectieassembly te genereren, moet u eerst het projectbestand bewerken om enkele projecteigenschappen op te geven.

  1. Dubbelklik in Solution Explorer op het knooppunt SimpleMathProjection om het projectbestand in de editor te openen.

  2. Werk het TargetFramework element bij om een specifieke Windows SDK-versie te targeten. Hiermee worden assembly-afhankelijkheden toegevoegd die nodig zijn voor de ondersteuning van interoperabiliteit en projectie. Dit voorbeeld is gericht op de Windows SDK-versie net6.0-windows10.0.19041.0 (ook bekend als Windows 10, versie 2004). Stel het Platform element in op AnyCPU , zodat vanuit elke app-architectuur naar de resulterende projectieassembly kan worden verwezen. Als u applicaties die oudere versies van de Windows SDK ondersteunen wilt toestaan, kunt u ook de eigenschap TargetPlatformMinimumVersion instellen.

    <PropertyGroup>
      <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
      <!-- Set Platform to AnyCPU to allow consumption of the projection assembly from any architecture. -->
      <Platform>AnyCPU</Platform>
    </PropertyGroup>
    

    Opmerking

    Voor deze procedure en de gerelateerde voorbeeldcode is de oplossing gebouwd voor x64 en release. Houd er rekening mee dat het SimpleMathProjection-project is geconfigureerd om te bouwen voor AnyCPU voor alle configuraties van oplossingsarchitectuur.

  3. Voeg een tweede PropertyGroup element toe (direct na de eerste) waarmee verschillende C#/WinRT-eigenschappen worden ingesteld.

    <PropertyGroup>
      <CsWinRTIncludes>SimpleMathComponent</CsWinRTIncludes>
      <CsWinRTGeneratedFilesDir>$(OutDir)</CsWinRTGeneratedFilesDir>
    </PropertyGroup>
    

    Hier volgen enkele details over de instellingen in dit voorbeeld:

    • De CsWinRTIncludes eigenschap geeft aan welke naamruimten moeten worden geprojecteerd.
    • Met CsWinRTGeneratedFilesDir de eigenschap wordt de uitvoermap ingesteld waarin de projectiebronbestanden worden gegenereerd. Deze eigenschap is ingesteld op OutDir, gedefinieerd in Directory.Build.props uit de bovenstaande sectie.
  4. Sla het bestand SimpleMathProjection.csproj op, sluit het en klik indien nodig om projecten opnieuw te laden .

Een NuGet-pakket maken met de projectie

Als u de projectieassembly voor ontwikkelaars van .NET-toepassingen wilt distribueren, kunt u automatisch een NuGet-pakket maken bij het bouwen van de oplossing door extra projecteigenschappen toe te voegen. Voor .NET-doelen moet het NuGet-pakket de projectieassembly en de implementatieassembly van het onderdeel bevatten.

  1. Gebruik de onderstaande stappen om een NuGet-specificatiebestand (.nuspec) toe te voegen aan het SimpleMathProjection-project .

    1. Klik in Solution Explorer met de rechtermuisknop op het knooppunt SimpleMathProjection, kiesNieuwe map> en geef de map nuget een naam.
    2. Klik met de rechtermuisknop op de map nuget, kies Add>New Item, kies XML-bestanden geef het SimpleMathProjection.nuspec.
  2. Dubbelklik in Solution Explorer op het knooppunt SimpleMathProjection om het projectbestand in de editor te openen. Voeg de volgende eigenschapsgroep toe aan de nu geopende SimpleMathProjection.csproj (direct na de twee bestaande PropertyGroup elementen) om het pakket automatisch te genereren. Deze eigenschappen geven de NuspecFile en de map op om het NuGet-pakket te genereren.

    <PropertyGroup>
      <GeneratedNugetDir>.\nuget\</GeneratedNugetDir>
      <NuspecFile>$(GeneratedNugetDir)SimpleMathProjection.nuspec</NuspecFile>
      <OutputPath>$(GeneratedNugetDir)</OutputPath>
      <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    </PropertyGroup>
    

    Opmerking

    Als u liever een pakket afzonderlijk genereert, kunt u er ook voor kiezen om het nuget.exe hulpprogramma uit te voeren vanaf de opdrachtregel. Zie Een pakket maken met behulp van de nuget.exe CLI voor meer informatie over het maken van een NuGet-pakket.

  3. Open het bestand SimpleMathProjection.nuspec om de eigenschappen van het maken van het pakket te bewerken en plak de volgende code. Het onderstaande codefragment is een voorbeeld van een NuGet-specificatie voor het distribueren van SimpleMathComponent naar meerdere doelframeworks. Houd er rekening mee dat projectieassembly, SimpleMathProjection.dll, is opgegeven in plaats van SimpleMathComponent.winmd voor het doel lib\net6.0-windows10.0.19041.0\SimpleMathProjection.dll. Dit gedrag is nieuw in .NET 6 en hoger en is ingeschakeld door C#/WinRT. De implementatieassembly, SimpleMathComponent.dll, moet ook worden gedistribueerd en tijdens runtime worden geladen.

    <?xml version="1.0" encoding="utf-8"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
      <metadata>
        <id>SimpleMathComponent</id>
        <version>0.1.0-prerelease</version>
        <authors>Contoso Math Inc.</authors>
        <description>A simple component with basic math operations</description>
        <dependencies>
          <group targetFramework="net6.0-windows10.0.19041.0" />
          <group targetFramework=".NETCoreApp3.0" />
          <group targetFramework="UAP10.0" />
          <group targetFramework=".NETFramework4.6" />
        </dependencies>
      </metadata>
      <files>
        <!--Support .NET 6, .NET Core 3, UAP, .NET Framework 4.6, C++ -->
        <!--Architecture-neutral assemblies-->
        <file src="..\..\_build\AnyCPU\Release\SimpleMathProjection\bin\SimpleMathProjection.dll" target="lib\net6.0-windows10.0.19041.0\SimpleMathProjection.dll" />
        <file src="..\..\_build\x64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.winmd" target="lib\netcoreapp3.0\SimpleMathComponent.winmd" />
        <file src="..\..\_build\x64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.winmd" target="lib\uap10.0\SimpleMathComponent.winmd" />
        <file src="..\..\_build\x64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.winmd" target="lib\net46\SimpleMathComponent.winmd" />
        <!--Architecture-specific implementation DLLs should be copied into RID-relative folders-->
        <file src="..\..\_build\x64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.dll" target="runtimes\win10-x64\native\SimpleMathComponent.dll" />
        <!--To support x86 and Arm64, build SimpleMathComponent for those other architectures and uncomment the entries below.-->
        <!--<file src="..\..\_build\Win32\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.dll" target="runtimes\win10-x86\native\SimpleMathComponent.dll" />-->
        <!--<file src="..\..\_build\arm64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.dll" target="runtimes\win10-arm64\native\SimpleMathComponent.dll" />-->
      </files>
    </package>
    

    Opmerking

    SimpleMathComponent.dll, de implementatieassembly voor het onderdeel, is architectuurspecifiek. Als u andere platforms ondersteunt (bijvoorbeeld x86 of Arm64), moet u eerst SimpleMathComponent bouwen voor de gewenste platforms en deze assemblybestanden toevoegen aan de juiste RID-relatieve map. De projectieassembly SimpleMathProjection.dll en het onderdeel SimpleMathComponent.winmd zijn beide architectuurneutraal.

  4. Sla de bestanden op die u zojuist hebt bewerkt en sluit deze.

De oplossing bouwen om de projectie en het NuGet-pakket te genereren

Voordat u de oplossing maakt, controleert u de instellingen van Configuration Manager in Visual Studio onder Build>Configuration Manager. Voor deze procedure stelt u de configuratie in op Release en Platform op x64 voor de oplossing.

Op dit moment kunt u de oplossing bouwen. Klik met de rechtermuisknop op het oplossingsknooppunt en selecteer Oplossing bouwen. Hiermee bouwt u eerst het SimpleMathComponent-project en vervolgens het SimpleMathProjection-project . Het onderdeel WinMD en de implementatieassembly (SimpleMathComponent.winmd en SimpleMathComponent.dll), de projectiebronbestanden en de projectieassembly (SimpleMathProjection.dll), worden allemaal gegenereerd onder de _build uitvoermap. U kunt ook het gegenereerde NuGet-pakket, SimpleMathComponent0.1.0-prerelease.nupkg, zien onder de map \SimpleMathProjection\nuget .

Belangrijk

Als een van de hierboven genoemde bestanden niet wordt gegenereerd, bouwt u de oplossing een tweede keer. Mogelijk moet u de oplossing ook sluiten en opnieuw openen voordat u de oplossing opnieuw opbouwt.

Mogelijk moet u de oplossing sluiten en opnieuw openen om .nupkg te laten verschijnen in Visual Studio zoals getoond (of selecteer en deselecteer vervolgens Toon alle bestanden).

Solution Explorer geeft het genereren van projecties weer

Verwijzen naar het NuGet-pakket in een C# .NET 6-consoletoepassing

Als u SimpleMathComponent wilt gebruiken vanuit een .NET-project, kunt u gewoon een verwijzing toevoegen naar het SimpleMathComponent0.1.0-prerelease.nupkg NuGet-pakket dat we in de vorige sectie hebben gemaakt. In de volgende stappen ziet u hoe u dit doet door een eenvoudige console-app te maken in een afzonderlijke oplossing.

  1. Gebruik de onderstaande stappen om een nieuwe oplossing te maken die een C# Console App-project bevat (door dit project in een nieuwe oplossing te maken, kunt u het NuGet-pakket SimpleMathComponent onafhankelijk herstellen).

    Belangrijk

    We maken dit nieuwe Console-applicatie project in de \CsWinRT\src\Samples\NetProjectionSample map, die u vindt in de gedownloade of gekloonde versie van het C#/WinRT-projectievoorbeeld.

    1. Selecteer in een nieuwe instantie van Visual Studio File>New>Project.
    2. Zoek in het dialoogvenster Een nieuw project maken naar de Console-app projectsjabloon. Kies de C#-projectsjabloon met de naam console-app (zonder voorvoegsels of achtervoegsels) en klik op Volgende. Als u Visual Studio 2019 gebruikt, dan is de projectsjabloon Consoletoepassing.
    3. Geef het nieuwe project de naam SampleConsoleApp, stel de locatie in op dezelfde \CsWinRT\src\Samples\NetProjectionSample map waarin de mappen SimpleMathComponent en SimpleMathProjection zich bevinden en klik op Volgende.
    4. Selecteer op de pagina Aanvullende informatie.NET 6.0 (langetermijnondersteuning), en kies vervolgens Maken.
  2. Dubbelklik in Solution Explorer op het knooppunt SampleConsoleApp om het projectbestand SampleConsoleApp.csproj te openen en bewerk de TargetFramework eigenschappen Platform zodat ze eruitzien zoals wordt weergegeven in de volgende vermelding. Voeg het Platform element toe als het niet aanwezig is.

    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
      <Platform>x64</Platform>
    </PropertyGroup>
    
  3. Met het projectbestand SampleConsoleApp.csproj nog geopend, wordt een verwijzing naar het SimpleMathComponent NuGet-pakket toegevoegd aan het project SampleConsoleApp. Als u de SimpleMathComponent NuGet wilt herstellen bij het bouwen van het project, kunt u de eigenschap RestoreSources gebruiken met het pad naar de map nuget in uw componentoplossing. Kopieer de volgende configuratie en plak deze in SampleConsoleApp.csproj (binnen het Project element).

    <PropertyGroup>
      <RestoreSources>
        https://api.nuget.org/v3/index.json;
        ../SimpleMathProjection/nuget
      </RestoreSources>
    </PropertyGroup>
    
    <ItemGroup>
      <PackageReference Include="SimpleMathComponent" Version="0.1.0-prerelease" />
    </ItemGroup>
    

    Belangrijk

    Het RestoreSources pad voor het SimpleMathComponent-pakket dat hierboven wordt weergegeven, is ingesteld op ../SimpleMathProjection/nuget. Dit pad is juist, mits u de stappen in dit scenario hebt gevolgd, zodat de projecten SimpleMathComponent en SampleConsoleApp beide zich in dezelfde map bevinden (in dit geval de NetProjectionSample map). Als u iets anders hebt gedaan, moet u dat pad dienovereenkomstig aanpassen. U kunt ook een lokale NuGet-pakketfeed toevoegen aan uw oplossing.

  4. Bewerk het Program.cs-bestand om de functionaliteit van SimpleMathComponent te gebruiken.

    var x = new SimpleMathComponent.SimpleMath();
    Console.WriteLine("Adding 5.5 + 6.5 ...");
    Console.WriteLine(x.add(5.5, 6.5).ToString());
    
  5. Sla de bestanden die u zojuist hebt bewerkt op en sluit deze, en bouw en voer de console-app uit. U ziet nu de onderstaande uitvoer.

    Console NET5-uitvoer

Bekende problemen

  • Bij het bouwen van het projectieproject ziet u mogelijk een fout zoals: Fout MSB3271 Er is een onjuiste overeenkomst tussen de processorarchitectuur van het project dat wordt gebouwd 'MSIL' en de processorarchitectuur , 'x86', van het implementatiebestand '..\SimpleMathComponent.dll' voor '.. \SimpleMathComponent.winmd". Deze overeenkomst kan leiden tot runtimefouten. Overweeg om de doelprocessorarchitectuur van uw project te wijzigen via Configuration Manager, zodat de processorarchitecturen tussen uw project en implementatiebestand worden uitgelijnd, of kies een winmd-bestand met een implementatiebestand met een processorarchitectuur die overeenkomt met de doelprocessorarchitectuur van uw project. Als u deze fout wilt omzeilen, voegt u de volgende eigenschap toe aan uw C#-bibliotheekprojectbestand:
    <PropertyGroup>
        <!-- Workaround for MSB3271 error on processor architecture mismatch -->
        <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    </PropertyGroup>
    

Verdere overwegingen

De C#-projectieassembly (of interop) die we hebben laten zien hoe u in dit onderwerp kunt maken, is vrij eenvoudig. Het heeft geen afhankelijkheden van andere onderdelen. Maar als u een C#-projectie wilt genereren voor een C++/WinRT-onderdeel met verwijzingen naar Windows App SDK-typen, moet u in het projectieproject een verwijzing toevoegen naar het NuGet-pakket van de Windows App SDK. Als dergelijke verwijzingen ontbreken, ziet u fouten zoals 'Type <T> is niet gevonden'.

Een ander wat we in dit onderwerp doen, is om de projectie te distribueren als een NuGet-pakket. Deze is momenteel nodig.

Hulpmiddelen