Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie omówimy używanie C#/WinRT do generowania zestawu projekcji .NET języka C# (lub międzyoperacyjności) ze składnika środowiska uruchomieniowego systemu Windows C++/WinRT i dystrybuowania go jako pakietu NuGet dla aplikacji platformy .NET.
W programie .NET 6 lub nowszym użycie plików metadanych systemu Windows (WinMD) nie jest już obsługiwane (zobacz Wbudowana obsługa winRT jest usuwana z platformy .NET). Zamiast tego narzędzie C#/WinRT może służyć do generowania zestawu projekcji dla dowolnego pliku WinMD, który następnie umożliwia użycie składników WinRT z aplikacji platformy .NET. Zestaw projekcji jest również znany jako zestaw międzyoperacyjny. W tym przewodniku pokazano, jak wykonać następujące czynności:
- Użyj pakietu C#/WinRT, aby wygenerować projekcję C# z komponentu C++/WinRT.
- Dystrybuuj składnik wraz z zestawem projekcji jako pakiet NuGet.
- Użyj pakietu NuGet w aplikacji konsolowej .NET.
Wymagania wstępne
Ten przewodnik i odpowiedni przykład wymagają następujących narzędzi i składników:
- Visual Studio 2022 (lub Visual Studio 2019) z zainstalowanym obciążeniem programistycznym na platformę uniwersalną systemu Windows. W szczegółach instalacji>narzędzia programistyczne platformy uniwersalnej systemu Windowszaznacz opcję narzędzia C++ (v14x) platformy uniwersalnej systemu Windows.
- zestaw SDK platformy .NET 6.0 lub nowszy.
tylko programu Visual Studio 2019. Rozszerzenie C++/WinRT VSIX, które udostępnia szablony projektów C++/WinRT w programie Visual Studio. Szablony projektów są wbudowane w program Visual Studio 2022.
W tym przewodniku będziemy używać programów Visual Studio 2022 i .NET 6.
Ważne
Ponadto musisz pobrać lub sklonować przykładowy kod dla tego tematu z przykładu projekcji C#/WinRT w witrynie GitHub. Odwiedź CsWinRTi kliknij zielony przycisk kod, aby uzyskać URL git clone. Pamiętaj, aby odczytać plik README.md w celach demonstracyjnych.
Tworzenie prostego składnika środowiska uruchomieniowego systemu Windows C++/WinRT
Aby wykonać czynności opisane w tym przewodniku, musisz najpierw mieć składnik środowiska uruchomieniowego systemu Windows C++/WinRT (WRC), z którego ma zostać wygenerowany zestaw projekcji języka C#.
W tym przewodniku użyto SimpleMathComponent WRC z przykładu projekcji C#/WinRT na GitHubie, który już pobrałeś lub sklonowałeś. SimpleMathComponent został utworzony z użyciem komponentu Windows Runtime (C++/WinRT) szablonu projektu Visual Studio, który jest dostępny wraz z Visual Studio 2022 lub z rozszerzeniem C++/WinRT VSIX.
Aby otworzyć projekt SimpleMathComponent w programie Visual Studio, otwórz \CsWinRT\src\Samples\NetProjectionSample\CppWinRTComponentProjectionSample.sln plik, który znajdziesz w pobranym lub sklonowanym repozytorium.
Kod w tym projekcie udostępnia funkcje podstawowych operacji matematycznych pokazanych w poniższym pliku nagłówkowym.
// 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);
};
}
Możesz potwierdzić, że właściwość Windows Desktop Compatible jest ustawiona na Tak dla projektu składnika SimpleMathComponent C++/WinRT środowiska uruchomieniowego Windows. W tym celu, we właściwościach projektu dla SimpleMathComponent, pod właściwościami konfiguracji >Ogólne>Project Defaults, ustaw właściwość Zgodność z Windows Desktop na Tak. Dzięki temu prawidłowe pliki binarne środowiska uruchomieniowego są ładowane do użytkowania aplikacji desktopowych .NET.
strona właściwości zgodnej z programem 
Aby uzyskać bardziej szczegółowe instrukcje dotyczące tworzenia składnika C++/WinRT i generowania pliku WinMD, zobacz Składniki środowiska uruchomieniowego systemu Windows z językiem C++/WinRT.
Uwaga / Notatka
Jeśli implementujesz IInspectable::GetRuntimeClassName w składniku, musi zwrócić prawidłową nazwę klasy WinRT. Ponieważ język C#/WinRT używa ciągu nazwy klasy dla międzyoperacyjności, nieprawidłowa nazwa klasy środowiska uruchomieniowego zgłosi InvalidCastException.
Dodaj projekt symulacji do rozwiązania składnika
Najpierw, gdy rozwiązanie CppWinRTComponentProjectionSample jest nadal otwarte w programie Visual Studio, usuń projekt SimpleMathProjection z tego rozwiązania. Następnie usuń z systemu plików folder SimpleMathProjection (lub zmień jego nazwę, jeśli wolisz). Te kroki są niezbędne, aby można było wykonać ten przewodnik krok po kroku.
Dodaj nowy projekt biblioteki języka C# do rozwiązania.
- W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy węzeł rozwiązania i kliknij polecenie Dodaj>nowy projekt.
- W oknie dialogowym Dodawanie nowego projektu wpisz Class Library w polu wyszukiwania. Wybierz pozycję C# z listy języków, a następnie wybierz pozycję Windows z listy platformy. Wybierz szablon projektu języka C#, który jest nazywany po prostu biblioteką klas (bez prefiksów ani sufiksów), a następnie kliknij przycisk Dalej.
- Nadaj nowemu projektowi nazwę SimpleMathProjection. Lokalizacja powinna być już ustawiona na ten sam
\CsWinRT\src\Samples\NetProjectionSamplefolder, w którego znajduje się folder SimpleMathComponent , ale upewnij się, że. Następnie kliknij Dalej. - Na stronie Dodatkowe informacje wybierz .NET 6.0 (obsługa długoterminowa), a następnie kliknij Utwórz.
Usuń plik szkieletu Class1.cs z projektu.
Wykonaj poniższe kroki, aby zainstalować pakiet NuGet języka C#/WinRT.
- W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt SimpleMathProjection i wybierz polecenie Zarządzaj pakietami NuGet.
- Na karcie Przeglądaj wpisz lub wklej Microsoft.Windows.CsWinRT w polu wyszukiwania, a następnie w wynikach wyszukiwania wybierz pozycję z najnowszą wersją, a potem kliknij Zainstaluj, aby zainstalować pakiet w projekcie SimpleMathProjection.
Dodaj do SimpleMathProjection odwołanie do projektu SimpleMathComponent. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy na węźle zależności w węźle projektu SimpleMathProjection, a następnie wybierz Dodaj odwołanie do projektu, i wybierz projekt SimpleMathComponent. Na koniec kliknij >OK.
Nie próbuj jeszcze budować projektu. Zrobimy to w późniejszym kroku.
Do tej pory Eksplorator rozwiązań powinien wyglądać podobnie do tego (numery wersji będą inne).
Budowanie projektów z kodu źródłowego
W przypadku rozwiązania CppWinRTComponentProjectionSample w przykładzie projekcji C#/WinRT (które zostały pobrane lub sklonowane z usługi GitHub, a teraz są otwarte), lokalizacja danych wyjściowych kompilacji jest skonfigurowana przy użyciu pliku Directory.Build.prop s w celu skompilowania poza źródłowym. Oznacza to, że pliki z danych wyjściowych kompilacji są generowane poza folderem źródłowym. Zalecamy kompilowanie poza źródłem podczas korzystania z narzędzia C#/WinRT. Zapobiega to nieumyślnemu pobraniu wszystkich plików *.cs w katalogu głównym projektu, co może powodować błędy zduplikowanego typu (na przykład podczas kompilowania dla wielu konfiguracji i/lub platform).
Mimo że jest to już skonfigurowane dla rozwiązania CppWinRTComponentProjectionSample , wykonaj poniższe kroki, aby samodzielnie przeprowadzić konfigurację.
Aby skonfigurować rozwiązanie do kompilowania poza źródłem:
Po otwarciu rozwiązania CppWinRTComponentProjectionSample kliknij prawym przyciskiem myszy węzeł rozwiązania, a następnie wybierz pozycję Dodaj>nowy element. Wybierz element Plik XML i nadaj mu nazwę Directory.Build.props (bez
.xmlrozszerzenia). Kliknij przycisk Tak , aby zastąpić istniejący plik.Zastąp zawartość pliku Directory.Build.props poniższą konfiguracją.
<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>Zapisz i zamknij plik
Directory.Build.props.
Edytuj plik projektu dla uruchomienia C#/WinRT
Aby można było wywołać cswinrt.exe narzędzie w celu wygenerowania zestawu projekcji, należy najpierw edytować plik projektu, aby określić kilka właściwości projektu.
W Eksploratorze rozwiązań kliknij dwukrotnie węzeł SimpleMathProjection , aby otworzyć plik projektu w edytorze.
Zaktualizuj element
TargetFrameworktak, aby był skierowany na określoną wersję Windows SDK. Spowoduje to dodanie zależności zestawów, które są niezbędne do obsługi międzyoperacyjnej i projekcji. Ten przykład dotyczy zestawu Windows SDK w wersji net6.0-windows10.0.19041.0 (znanej również jako Windows 10, wersja 2004).PlatformUstaw element na "AnyCPU", aby wynikowy zestaw projekcji mógł być odwoływany z dowolnej architektury aplikacji. Aby zezwolić na używanie odwołań do aplikacji obsługujących wcześniejsze wersje zestawu Windows SDK, można również ustawićTargetPlatformMinimumVersionwłaściwość .<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>Uwaga / Notatka
W tym przewodniku i powiązanym przykładowym kodzie rozwiązanie jest tworzone dla x64 i Release. Należy pamiętać, że projekt SimpleMathProjection jest skonfigurowany do kompilowania dla platformy AnyCPU dla wszystkich konfiguracji architektury rozwiązania.
Dodaj drugi
PropertyGroupelement (bezpośrednio po pierwszym), który ustawia kilka właściwości języka C#/WinRT.<PropertyGroup> <CsWinRTIncludes>SimpleMathComponent</CsWinRTIncludes> <CsWinRTGeneratedFilesDir>$(OutDir)</CsWinRTGeneratedFilesDir> </PropertyGroup>Poniżej przedstawiono kilka szczegółów dotyczących ustawień w tym przykładzie:
- Właściwość
CsWinRTIncludesokreśla, które przestrzenie nazw mają być projektowane. - Właściwość
CsWinRTGeneratedFilesDirustawia katalog wyjściowy, w którym są generowane pliki źródłowe projekcji. Ta właściwość jest ustawiona naOutDir, zdefiniowaną w pliku Directory.Build.props z powyższej sekcji.
- Właściwość
Zapisz i zamknij plik SimpleMathProjection.csproj, a następnie kliknij polecenie Załaduj ponownie projekty w razie potrzeby.
Tworzenie pakietu NuGet przy użyciu projekcji
Aby dystrybuować zestaw projekcji dla deweloperów aplikacji .NET, możesz automatycznie utworzyć pakiet NuGet podczas kompilowania rozwiązania, dodając kilka dodatkowych właściwości projektu. W przypadku obiektów docelowych platformy .NET pakiet NuGet musi zawierać zarówno zestaw projekcji, jak i zestaw implementacji ze składnika.
Wykonaj poniższe kroki, aby dodać plik specyfikacji NuGet (
.nuspec) do projektu SimpleMathProjection .- W eksploratorze rozwiązań , kliknij prawym przyciskiem myszy węzeł SimpleMathProjection, wybierz Dodaj>Nowy folder, i nadaj folderowi nazwę nuget.
- Kliknij prawym przyciskiem myszy folder nuget , wybierz polecenie Dodaj>nowy element, wybierz pozycję Plik XML i nadaj mu nazwę SimpleMathProjection.nuspec.
W Eksploratorze rozwiązań kliknij dwukrotnie węzeł SimpleMathProjection , aby otworzyć plik projektu w edytorze. Dodaj następującą grupę właściwości do teraz otwartego pliku SimpleMathProjection.csproj (bezpośrednio po dwóch istniejących
PropertyGroupelementach), aby automatycznie wygenerować pakiet. Te właściwości określająNuspecFilei katalog do wygenerowania pakietu NuGet.<PropertyGroup> <GeneratedNugetDir>.\nuget\</GeneratedNugetDir> <NuspecFile>$(GeneratedNugetDir)SimpleMathProjection.nuspec</NuspecFile> <OutputPath>$(GeneratedNugetDir)</OutputPath> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> </PropertyGroup>Uwaga / Notatka
Jeśli wolisz generować pakiet oddzielnie, możesz również uruchomić
nuget.exenarzędzie z poziomu wiersza polecenia. Aby uzyskać więcej informacji na temat tworzenia pakietu NuGet, zobacz Tworzenie pakietu przy użyciu interfejsu wiersza polecenia nuget.exe.Otwórz plik SimpleMathProjection.nuspec , aby edytować właściwości tworzenia pakietu, a następnie wklej następujący kod. Poniższy fragment kodu jest przykładem specyfikacji NuGet do dystrybucji simpleMathComponent do wielu platform docelowych. Należy pamiętać, że zestaw projekcji, SimpleMathProjection.dll, jest określony zamiast SimpleMathComponent.winmd dla
lib\net6.0-windows10.0.19041.0\SimpleMathProjection.dlldocelowego . To zachowanie jest nowe w programie .NET 6 lub nowszym i jest włączone przez język C#/WinRT. Zestaw implementacji,SimpleMathComponent.dll, musi być również dystrybuowany i zostanie załadowany w czasie wykonywania.<?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>Uwaga / Notatka
SimpleMathComponent.dll, zestaw implementacji dla składnika, jest specyficzny dla architektury. Jeśli obsługujesz inne platformy (na przykład x86 lub Arm64), musisz najpierw skompilować SimpleMathComponent dla żądanych platform i dodać te pliki zestawów do odpowiedniego folderu względnego identyfikatora RID. Moduł projekcji SimpleMathProjection.dll i składnik SimpleMathComponent.winmd są neutralne pod względem architektury.
Zapisz i zamknij właśnie edytowane pliki.
Tworzenie rozwiązania w celu wygenerowania projekcji i pakietu NuGet
Przed utworzeniem rozwiązania upewnij się, że sprawdziłeś ustawienia programu Configuration Manager w Visual Studio, w sekcji Build>Configuration Manager. W tym przewodniku ustaw Konfiguracja na wydanie i Platforma na x64 dla rozwiązania.
Teraz możesz skompilować rozwiązanie. Kliknij prawym przyciskiem myszy węzeł rozwiązania i wybierz Skompiluj rozwiązanie. Najpierw skompiluje projekt SimpleMathComponent, a następnie projekt SimpleMathProjection. Składnik WinMD i zestaw implementacji (SimpleMathComponent.winmd i SimpleMathComponent.dll), pliki źródłowe projekcji i zestaw projekcji (SimpleMathProjection.dll) zostaną wygenerowane w katalogu danych wyjściowych _build . Zobaczysz również wygenerowany pakiet NuGet SimpleMathComponent0.1.0-prerelease.nupkg w folderze \SimpleMathProjection\nuget .
Ważne
Jeśli którykolwiek z wymienionych powyżej plików nie zostanie wygenerowany, skompiluj rozwiązanie po raz drugi. Może być również konieczne zamknięcie i ponowne otwarcie rozwiązania przed ponownym skompilowaniem.
Może być konieczne zamknięcie i ponowne otwarcie rozwiązania, aby .nupkg było widoczne w programie Visual Studio, jak na ilustracji (lub po prostu wybierz, a następnie odznacz Pokaż wszystkie pliki).
Eksplorator rozwiązań 
Odwołanie do pakietu NuGet w aplikacji konsolowej .NET 6 języka C#
Aby korzystać z SimpleMathComponent z projektu platformy .NET, możesz po prostu dodać do nowego projektu .NET odwołanie do pakietu NuGet SimpleMathComponent0.1.0-prerelease.nupkg, który utworzyliśmy w poprzedniej sekcji. Poniższe kroki pokazują, jak to zrobić, tworząc prostą aplikację konsolową w osobnym rozwiązaniu.
Wykonaj poniższe kroki, aby utworzyć nowe rozwiązanie zawierające projekt aplikacji konsolowej języka C# (utworzenie tego projektu w nowym rozwiązaniu umożliwia niezależne przywrócenie pakietu NuGet SimpleMathComponent ).
Ważne
Utworzymy ten nowy projekt Console App w folderze
\CsWinRT\src\Samples\NetProjectionSample, który znajdziesz w pobranej lub sklonowanej wersji przykładu projekcji C#/WinRT.- W nowym wystąpieniu programu Visual Studio wybierz pozycję Plik >Nowy>Projekt.
- W oknie dialogowym Tworzenie nowego projektu, wyszukaj szablon projektu Aplikacja konsolowa. Wybierz szablon projektu języka C#, który jest nazywany po prostu aplikacją konsolową (bez prefiksów ani sufiksów), a następnie kliknij przycisk Dalej. Jeśli używasz programu Visual Studio 2019, szablon projektu to Aplikacja konsolowa.
- Nadaj nowemu projektowi nazwę SampleConsoleApp, ustaw jego lokalizację na ten sam
\CsWinRT\src\Samples\NetProjectionSamplefolder, w który znajdują się foldery SimpleMathComponent i SimpleMathProjection , a następnie kliknij przycisk Dalej. - Na stronie Dodatkowe informacje wybierz .NET 6.0 (obsługa długoterminowa), a następnie kliknij Utwórz.
W Eksploratorze rozwiązań kliknij dwukrotnie węzeł SampleConsoleApp, aby otworzyć plik projektu SampleConsoleApp.csproj, a następnie edytuj właściwości
TargetFrameworkiPlatform, tak aby wyglądały jak pokazano na poniższej liście. Dodaj elementPlatform, jeśli go tam nie ma.<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> <Platform>x64</Platform> </PropertyGroup>Gdy plik projektu
SampleConsoleApp.csproj jest nadal otwarty, dodamy go do projektu SampleConsoleApp odwołaniem do pakietuSimpleMathComponent NuGet. Aby przywrócić SimpleMathComponent NuGet podczas kompilowania projektu, możesz użyć właściwościRestoreSources, podając ścieżkę do folderu nuget w rozwiązaniu komponentu. Skopiuj następującą konfigurację i wklej ją do pliku SampleConsoleApp.csproj (wewnątrzProjectelementu).<PropertyGroup> <RestoreSources> https://api.nuget.org/v3/index.json; ../SimpleMathProjection/nuget </RestoreSources> </PropertyGroup> <ItemGroup> <PackageReference Include="SimpleMathComponent" Version="0.1.0-prerelease" /> </ItemGroup>Ważne
Ścieżka
RestoreSourcesdla pakietu SimpleMathComponent jest ustawiona na../SimpleMathProjection/nuget. Ta ścieżka jest poprawna, jeśli wykonano kroki opisane w tym przewodniku, tak że projekty SimpleMathComponent i SampleConsoleApp znajdują się w tym samym folderze (w tym przypadkuNetProjectionSamplefolderze). Jeśli zrobiłeś coś innego, musisz odpowiednio dostosować ścieżkę. Alternatywnie możesz dodać lokalne repozytorium pakietów NuGet do rozwiązania.Edytuj plik Program.cs , aby korzystać z funkcji udostępnianych przez aplikację SimpleMathComponent.
var x = new SimpleMathComponent.SimpleMath(); Console.WriteLine("Adding 5.5 + 6.5 ..."); Console.WriteLine(x.add(5.5, 6.5).ToString());Zapisz i zamknij właśnie edytowane pliki, a następnie skompiluj i uruchom aplikację konsolową. Powinny zostać wyświetlone dane wyjściowe poniżej.
Znane problemy
- Podczas budowania projektu projekcji może zostać wyświetlony błąd, taki jak: Błąd MSB3271 Wystąpiła niezgodność między architekturą procesora tworzonego projektu "MSIL" i architekturą procesora "x86" pliku implementacji"..\SimpleMathComponent.dll" dla "..\SimpleMathComponent.winmd". Ta niezgodność może spowodować problemy podczas wykonywania. Rozważ zmianę docelowej architektury procesora projektu używając menedżera konfiguracji, aby dopasować architektury procesora między projektem i plikiem implementacji, lub wybrać plik winmd zawierający plik implementacji, którego architektura procesora jest zgodna z docelową architekturą procesora projektu. Aby obejść ten błąd, dodaj następującą właściwość do pliku projektu biblioteki C#:
<PropertyGroup> <!-- Workaround for MSB3271 error on processor architecture mismatch --> <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch> </PropertyGroup>
Dalsze zagadnienia
Projekcja (lub międzyoperacyjność) w języku C#, o której pokazaliśmy, jak ją utworzyć w tym temacie, jest dość prosta — nie ma zależności od innych składników. Jednak aby wygenerować projekcję języka C# dla składnika C++/WinRT, który zawiera odwołania do typów zestawu SDK aplikacji systemu Windows, w projekcie projekcji należy dodać odwołanie do pakietu NuGet zestawu SDK aplikacji systemu Windows. Jeśli brakuje takich odwołań, zobaczysz błędy, takie jak "Nie można odnaleźć typu <T> ".
Inną rzeczą, którą robimy w tym temacie, jest dystrybuowanie projekcji jako pakietu NuGet. Ta jest obecnie wymagana.
Zasoby
Windows developer