Megosztás a következőn keresztül:


C#-kivetítés létrehozása C++/WinRT-összetevőből, nuGet-ként terjesztve .NET-alkalmazásokhoz

Ebben a témakörben végigvezetjük a C#/WinRT használatával egy C# .NET-kivetítési (vagy interop) szerelvényt egy C++/WinRT Windows-futtatókörnyezeti összetevőből, és nuGet-csomagként terjesztjük .NET-alkalmazásokhoz.

A .NET 6-os és újabb verzióiban a Windows metaadatfájlok (WinMD) használata már nem támogatott (lásd a beépített WinRT támogatás eltávolításáról a .NET-ből). Ehelyett a C#/WinRT eszköz bármely WinMD-fájlhoz létrehozhat egy kivetítési szerelvényt, amely lehetővé teszi a WinRT-összetevők használatát .NET-alkalmazásokból. A vetületi szerelvényt interop szerelvénynek is nevezik. Ez az útmutató a következőket mutatja be:

  • A C#/WinRT-csomag használatával hozzon létre C#-vetületet egy C++/WinRT-összetevőből.
  • Ossza el az összetevőt és a vetítési szerelvényt NuGet-csomagként.
  • Használja a NuGet-csomagot egy .NET-konzolalkalmazásból.

Előfeltételek

Ehhez az útmutatóhoz és a megfelelő mintához a következő eszközökre és összetevőkre van szükség:

  • Visual Studio 2022 (vagy Visual Studio 2019) az univerzális Windows platform fejlesztési környezetével telepítve. A Telepítés részletei>a Univerzális Windows Platform fejlesztésnélválassza ki a C++ (v14x) Univerzális Windows Platform-eszközök lehetőséget.
  • .NET 6.0 SDK vagy újabb.

Csak Visual Studio 2019. A C++/WinRT VSIX bővítmény c++/WinRT projektsablonokat biztosít a Visual Studióban. A projektsablonok a Visual Studio 2022-be vannak beépítve.

Ebben az útmutatóban a Visual Studio 2022-t és a .NET 6-ot fogjuk használni.

Fontos

Emellett le kell töltenie vagy klónoznia kell a témakörhöz tartozó mintakódot a GitHubon található C#/WinRT-vetítési minta. Látogasson el a CsWinRT webhelyre, és kattintson a zöld Kód gombra az git clone URL-cím lekéréséhez. Mindenképpen olvassa el a mintához tartozó README.md fájlt.

Egyszerű C++/WinRT Windows futtatókörnyezeti összetevő létrehozása

Az útmutató követéséhez először rendelkeznie kell egy C++/WinRT Windows-futtatókörnyezeti összetevővel (WRC), amelyből létre kell hoznia a C#-vetítési szerelvényt.

Ez az útmutató a GitHubon található C#/WinRT projection sample részeként elérhető SimpleMathComponent WRC-t használja, amelyet már letöltött vagy klónozott. A SimpleMathComponent a Windows Runtime Component (C++/WinRT) Visual Studio projektsablonból lett létrehozva (amely a Visual Studio 2022-hez vagy a C++/WinRT VSIX-bővítményhez tartozik).

A SimpleMathComponent projekt Visual Studióban való megnyitásához nyissa meg a \CsWinRT\src\Samples\NetProjectionSample\CppWinRTComponentProjectionSample.sln fájlt, amelyet az adattár letöltésében vagy klónozásában talál.

A projekt kódja az alábbi fejlécfájlban látható alapszintű matematikai műveletek funkcióit biztosítja.

// 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);
    };
}

Ellenőrizheti, hogy a Windows asztallal kompatibilis tulajdonság be van-e állítva Igen értékre a SimpleMathComponent C++/WinRT Windows Runtime összetevő projektnél. Ehhez a projekt tulajdonságaiban, a SimpleMathComponentKonfiguráció tulajdonságainálÁltalánosProjekt alapértelmezésekalatt, állítsa be a Windows asztali kompatibilis tulajdonságot az Igenértékre. Ez biztosítja, hogy a megfelelő futtatókörnyezeti bináris fájlok be legyenek töltve a .NET asztali alkalmazások felhasználásához.

Asztali számítógéppel kompatibilis beállítási lap

C++/WinRT-összetevő készítésének és a WinMD-fájl generálásának további lépéseiért lásd: Windows futtatókörnyezeti összetevők C++/WinRT-vel.

Megjegyzés:

Ha IInspectable::GetRuntimeClassName implementál az összetevőben, akkor érvényes WinRT-osztálynevet kell visszaadnia. Mivel a C#/WinRT az osztálynév sztringjét használja az interophoz, egy helytelen futtatókörnyezeti osztálynév egy InvalidCastExceptionkivételt fog eredményezni.

Vetítési projekt hozzáadása az összetevőmegoldáshoz

Először is, ha a CppWinRTComponentProjectionSample megoldás továbbra is meg van nyitva a Visual Studióban, távolítsa el a SimpleMathProjection projektet a megoldásból. Ezután törölje a fájlrendszerből a SimpleMathProjection mappát (vagy ha szeretné, nevezze át). Ezekre a lépésekre azért van szükség, hogy lépésről lépésre követni tudja ezt az útmutatót.

  1. Adjon hozzá egy új C#-kódtárprojektet a megoldáshoz.

    1. A Megoldáskezelőben kattintson a jobb gombbal a megoldáscsomópontra, és válassza azÚj projekt>.
    2. A Új projekt hozzáadása párbeszédpanelen írja be Osztálykönyvtár a keresőmezőbe. Válassza a C#-ot a nyelvi listából, majd válassza a Windowst a platformlistából. Válassza ki az egyszerűen osztálytárnak nevezett C#-projektsablont (előtagok és utótagok nélkül), majd kattintson a Tovább gombra.
    3. Nevezze el az új simpleMathProjection projektet. A helyet már ugyanarra \CsWinRT\src\Samples\NetProjectionSample a mappára kell állítani, amelyben a SimpleMathComponent mappa található, de ezt erősítse meg. Ezután kattintson a Next gombra.
    4. A További információk lapon válassza a .NET 6.0 (Hosszú távú támogatás)elemet, majd válassza a Hozzon létrelehetőséget.
  2. Törölje a csonk Class1.cs fájlt a projektből.

  3. Az alábbi lépésekkel telepítheti a C#/WinRT NuGet-csomagot.

    1. A Megoldáskezelőben kattintson a jobb gombbal a SimpleMathProjection projektre , és válassza a NuGet-csomagok kezelése lehetőséget.
    2. A Tallózás lapon írja be vagy illessze be a Microsoft.Windows.CsWinRT fájlt a keresőmezőbe, a keresési eredmények között válassza ki a legújabb verziójú elemet, majd a Telepítés gombra kattintva telepítse a csomagot a SimpleMathProjection projektbe.
  4. Adjon hozzá a SimpleMathProjectionhez egy projekthivatkozást a SimpleMathComponent projekthez. A Megoldáskezelőben kattintson a jobb gombbal a Függőségek csomópontra a SimpleMathProjection projektcsomópont alatt, válassza a Projekthivatkozás hozzáadása lehetőséget, és válassza a SimpleMathComponent projekt >OK gombját.

Még ne próbálja meg felépíteni a projektet. Ezt egy későbbi lépésben fogjuk megtenni.

Eddig a Megoldáskezelőnek ehhez hasonlóan kell kinéznie (a verziószámok eltérőek lesznek).

Megoldáskezelő megjeleníti a vetítési projekt függőségeit

Készíts projekteket forrásból

A CppWinRTComponentProjectionSample megoldáshoz a C#/WinRT-vetítési minta (amelyet a GitHubról töltött le vagy klónozott, és most megnyitott), a build kimeneti helyét a Directory.Build.props fájllal konfigurálja, hogy a forrásból. Ez azt jelenti, hogy a build kimenetéből származó fájlok a forrásmappán kívül jönnek létre. A C#/WinRT eszköz használatakor javasoljuk, hogy a forrásból építsen ki. Ez megakadályozza, hogy a C#-fordító véletlenül felvegyen minden *.cs fájlt a projekt gyökérkönyvtára alatt, ami ismétlődő típushibákat okozhat (például több konfiguráció és/vagy platform összeállítása esetén).

Annak ellenére, hogy ez már konfigurálva van a CppWinRTComponentProjectionSample megoldáshoz, kövesse az alábbi lépéseket, hogy gyakorolhassa a konfiguráció saját maga számára történő elvégzését.

A megoldás konfigurálása forrásból való buildelésre:

  1. Ha a CppWinRTComponentProjectionSample megoldás továbbra is nyitva van, kattintson a jobb gombbal a megoldáscsomópontra, és válassza azÚj elem> lehetőséget. Válassza ki az XML-fájlelemet , és nevezze el Directory.Build.props néven (bővítmény nélkül .xml ). Kattintson az Igen gombra a meglévő fájl felülírásához.

  2. Cserélje le a Directory.Build.props tartalmát az alábbi konfigurációra.

    <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. Mentse és zárja be a Directory.Build.props fájlt.

A projektfájl szerkesztése a C#/WinRT végrehajtásához

Mielőtt meghívhatja az eszközt a cswinrt.exe vetítési szerelvény létrehozásához, először szerkesztenie kell a projektfájlt néhány projekttulajdonság megadásához.

  1. A(z) Megoldáskezelő-ben dupla kattintással a SimpleMathProjection csomópontra nyissa meg a projektfájlt a szerkesztőben.

  2. Frissítse az TargetFramework elemet egy adott Windows SDK-verzió megcélzásához. Ez hozzáadja az interop és a projection támogatásához szükséges szerelvényfüggőségeket. Ez a minta a Windows SDK net6.0-windows10.0.19041.0 (más néven Windows 10, 2004-es verzió). Állítsa be a Platform elemet a AnyCPU értékre, hogy az eredményül kapott vetítési összeszerelés bármely alkalmazásarchitektúrából elérhető legyen. Ha engedélyezni szeretné, hogy a hivatkozási alkalmazások támogassák a korábbi Windows SDK-verziókat, beállíthatja a tulajdonságot TargetPlatformMinimumVersion is.

    <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>
    

    Megjegyzés:

    Ehhez az útmutatóhoz és a kapcsolódó mintakódhoz a megoldás x64 és Kiadványkészült. Vegye figyelembe, hogy a SimpleMathProjection projekt úgy van beállítva, hogy minden architektúra-konfiguráció esetén az AnyCPU platformra épüljön.

  3. Adjon hozzá egy második PropertyGroup elemet (közvetlenül az első után), amely több C#/WinRT-tulajdonságot állít be.

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

    A példában szereplő beállításokkal kapcsolatban az alábbiakban talál néhány részletet:

    • A CsWinRTIncludes tulajdonság határozza meg, hogy mely névtereket kell kivetíteni.
    • A CsWinRTGeneratedFilesDir tulajdonság beállítja azt a kimeneti könyvtárat, amelyben a vetítési forrásfájlok létre lettek hozva. Ez a tulajdonság a fenti szakaszban meghatározott OutDirértékre van állítva, a Directory.Build.props alapján.
  4. Mentse és zárja be a SimpleMathProjection.csproj fájlt, és szükség esetén kattintson a projektek újratöltéséhez .

NuGet-csomag létrehozása a kivetítéssel

A .NET-alkalmazásfejlesztők számára készült kivetítési szerelvény elosztásához automatikusan létrehozhat egy NuGet-csomagot a megoldás létrehozásakor további projekttulajdonságok hozzáadásával. A .NET-célok esetében a NuGet-csomagnak tartalmaznia kell a kivetítési szerelvényt és az összetevő implementációs szerelvényét.

  1. Az alábbi lépésekkel nuGet-specifikációs (.nuspec) fájlt adhat hozzá a SimpleMathProjection projekthez.

    1. A Megoldáskezelőben kattintson a jobb gombbal a SimpleMathProjection csomópontra, válassza azÚj mappa> lehetőséget, és adja meg a mappa nuget nevét.
    2. Kattintson a jobb gombbal a nuget mappára, válassza azÚj elem> lehetőséget, válassza az XML-fájlt, és adja neki a SimpleMathProjection.nuspec nevet.
  2. A(z) Megoldáskezelő-ben dupla kattintással a SimpleMathProjection csomópontra nyissa meg a projektfájlt a szerkesztőben. Adja hozzá a következő tulajdonságcsoportot a most megnyitott SimpleMathProjection.csproj fájlhoz (közvetlenül a két meglévő PropertyGroup elem után) a csomag automatikus létrehozásához. Ezek a tulajdonságok határozzák meg a NuGet-csomag létrehozásához a NuspecFile elemet és a könyvtárat.

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

    Megjegyzés:

    Ha külön szeretne létrehozni egy csomagot, akkor a parancssorból is futtathatja az nuget.exe eszközt. További információ egy NuGet-csomag létrehozásáról: Csomag létrehozása a nuget.exe parancssorihasználatával.

  3. Nyissa meg a SimpleMathProjection.nuspec fájlt a csomaglétrehozási tulajdonságok szerkesztéséhez, és illessze be a következő kódot. Az alábbi kódrészlet egy példa NuGet-specifikáció a SimpleMathComponent több cél keretrendszerre való terjesztéséhez. Vegye figyelembe, hogy a SimpleMathComponent.winmd helyett a SimpleMathProjection.dllvetítési szerelvény van megadva a cél lib\net6.0-windows10.0.19041.0\SimpleMathProjection.dll. Ez a viselkedés a .NET 6-os és újabb verzióiban új, és a C#/WinRT engedélyezi. Az implementálási szerelvényt (SimpleMathComponent.dll) is el kell osztani, és futásidőben kell betölteni.

    <?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>
    

    Megjegyzés:

    SimpleMathComponent.dllaz összetevő implementálási szerelvénye architektúraspecifikus. Ha más platformokat (például x86-ot vagy Arm64-et) támogat, először a SimpleMathComponentet fel kell építenie a kívánt platformokhoz, és hozzá kell adnia ezeket az assembly fájlokat a megfelelő RID-specifikus mappához. A kivetítési szerelvény SimpleMathProjection.dll és a SimpleMathComponent.winmd összetevő egyaránt architektúrasemleges.

  4. Mentse és zárja be az imént szerkesztett fájlokat.

A megoldás létrehozása a kivetítés és a NuGet-csomag létrehozásához

A megoldás létrehozása előtt ellenőrizze a Configuration Manager beállításait a Visual Studióban, a Build>Configuration Manager alatt. Ebben a lépésről-lépésre útmutatóban állítsa be a Konfiguráció-t a Kiadás-ra és a Platform-t a x64-re a megoldáshoz.

Ezen a ponton már létrehozhatja a megoldást. Kattintson a jobb gombbal a megoldás csomópontra, és válassza a Build megoldáslehetőséget. Ez először a SimpleMathComponent projektet, majd a SimpleMathProjection projektet hozza létre. A WinMD összetevő és az implementáció szerelvénye (SimpleMathComponent.winmd és SimpleMathComponent.dll), a kivetítési forrásfájlok és a kivetítési szerelvény (SimpleMathProjection.dll) mind a _build kimeneti könyvtárban lesznek létrehozva. A létrehozott NuGet-csomagot is láthatja, a SimpleMathComponent0.1.0-prerelease.nupkg fájlt a \SimpleMathProjection\nuget mappa alatt.

Fontos

Ha a fent említett fájlok egyike sem jön létre, akkor hozza létre a megoldást még egyszer. Előfordulhat, hogy be kell zárnia és újra meg kell nyitnia a megoldást, mielőtt újraépíti.

Előfordulhat, hogy be kell zárnia és újra meg kell nyitnia a megoldást ahhoz, hogy a .nupkg Visual Studióban az ábrán látható módon jelenjen meg (vagy csak válassza ki, majd törölje a kijelölést az Összes fájl megjelenítése lehetőségből).

Megoldáskezelő böngésző a vetítés generálása

Hivatkozás a NuGet-csomagra egy C# .NET 6-os konzolalkalmazásban

A SimpleMathComponent .NET-projektből való felhasználásához egyszerűen hozzáadhat egy új .NET-projekthez egy hivatkozást a SimpleMathComponent0.1.0-prerelease.nupkg NuGet-csomagra , amelyet az előző szakaszban hoztunk létre. Az alábbi lépések bemutatják, hogyan teheti ezt meg egy egyszerű konzolalkalmazás külön megoldásban való létrehozásával.

  1. Az alábbi lépésekkel létrehozhat egy C# -konzolalkalmazás-projektet tartalmazó új megoldást (a projekt új megoldásban való létrehozása lehetővé teszi a SimpleMathComponent NuGet-csomag önálló visszaállítását).

    Fontos

    Ebben a mappában fogjuk létrehozni ezt az új \CsWinRT\src\Samples\NetProjectionSample, amelyet a C#/WinRT-vetítési minta letöltött vagy klónozott verziójában talál.

    1. A Visual Studio új példányában válassza Fájl>Új>Projektlehetőséget.
    2. Az Új projekt létrehozása párbeszédpanelen keresse meg a Konzolalkalmazás projektsablont. Válassza ki a egyszerűen konzolalkalmazásnak nevezett C#-projektsablont (előtagok és utótagok nélkül), majd kattintson a Tovább gombra. Ha Visual Studio 2019-et használ, akkor a projektsablon a Konzolalkalmazás.
    3. Nevezze el az új projektet SampleConsoleApp néven, állítsa a helyét arra \CsWinRT\src\Samples\NetProjectionSample a mappára, amelyben a SimpleMathComponent és a SimpleMathProjection mappa található, majd kattintson a Tovább gombra.
    4. A További információk lapon válassza a .NET 6.0 (Hosszú távú támogatás)elemet, majd válassza a Hozzon létrelehetőséget.
  2. A Megoldáskezelőben kattintson duplán a SampleConsoleApp csomópontra a SampleConsoleApp.csproj projektfájl megnyitásához, és szerkessze a TargetFrameworkPlatform tulajdonságokat úgy, hogy azok az alábbi felsorolásban látható módon jelenjenek meg. Adja hozzá az Platform elemet, ha nincs ott.

    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
      <Platform>x64</Platform>
    </PropertyGroup>
    
  3. Ha a SampleConsoleApp.csproj projektfájl továbbra is nyitva van, a SampleConsoleApp projekthez hozzáadunk egy hivatkozást a SimpleMathComponent NuGet-csomaghoz. A SimpleMathComponent NuGet visszaállításához a projekt építésekor használhatja a RestoreSources tulajdonságot a komponens megoldás nuget mappájának elérési útjával. Másolja ki a következő konfigurációt, és illessze be a SampleConsoleApp.csproj fájlba (az Project elemen belül).

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

    Fontos

    A fent látható RestoreSources csomag elérési útja ../SimpleMathProjection/nuget. Ez az elérési út helyes, feltéve, hogy követte az útmutató lépéseit, így a SimpleMathComponent és a SampleConsoleApp-projektek is ugyanabban a mappában vannak (ebben az esetben a NetProjectionSample mappában). Ha valami mást tett, ennek megfelelően módosítania kell ezt az útvonalat. Másik lehetőségként hozzáadhat egy helyi NuGet csomagforrást a megoldáshoz.

  4. Szerkessze a Program.cs fájlt a SimpleMathComponent által biztosított funkciók használatához.

    var x = new SimpleMathComponent.SimpleMath();
    Console.WriteLine("Adding 5.5 + 6.5 ...");
    Console.WriteLine(x.add(5.5, 6.5).ToString());
    
  5. Mentse és zárja be az imént szerkesztett fájlokat, majd hozza létre és futtassa a konzolalkalmazást. Az alábbi kimenetnek kell megjelennie.

    console NET5 kimenet

Ismert problémák

  • A vetítési projekt létrehozásakor a következő hibaüzenet jelenhet meg: hiba MSB3271 Az "MSIL" projekt processzorarchitektúrája és az "x86" implementációs fájl processzorarchitektúrája nem egyezik.\SimpleMathComponent.dll" for ".. \SimpleMathComponent.winmd". Ez az eltérés futásidejű hibákat okozhat. Fontolja meg a projekt célzott processzorarchitektúrájának módosítását a Configuration Manageren keresztül, hogy a processzorarchitektúrákat a projekt és a megvalósítási fájl között igazítsa, vagy válasszon ki egy winmd fájlt egy olyan implementációs fájllal, amely a projekt célzott processzorarchitektúrájának megfelelő processzorarchitektúrával rendelkezik. A hiba megkerüléséhez adja hozzá a következő tulajdonságot a C#-kódtár projektfájljához:
    <PropertyGroup>
        <!-- Workaround for MSB3271 error on processor architecture mismatch -->
        <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    </PropertyGroup>
    

További szempontok

A jelen témakörben bemutatott C#-vetítési (vagy interop) szerelvény meglehetősen egyszerű– nem függ más összetevőkhöz. Ha azonban olyan C#-vetítést szeretne létrehozni egy C++/WinRT-összetevőhöz, amely Windows App SDK-típusokra hivatkozik, a kivetítési projektben fel kell vennie egy hivatkozást a Windows App SDK NuGet-csomagra. Ha az ilyen hivatkozások hiányoznak, akkor olyan hibák jelennek meg, mint a "T< típus >nem található".

Egy másik dolog, amit ebben a témakörben teszünk, az a kivetítés NuGet-csomagként való terjesztése. Jelenleg szükséges.

Erőforrások