Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
C#/WinRT, .NET kullanan geliştiricilerin bir sınıf kitaplığı projesi kullanarak C# dilinde kendi Windows Çalışma Zamanı bileşenlerini yazmasına olanak tanır. Yazılan bileşenler yerel masaüstü uygulamalarında paket başvurusu veya birkaç değişiklikle proje başvurusu olarak kullanılabilir.
Bu kılavuzda C#/WinRT kullanarak basit bir Windows Çalışma Zamanı bileşeni oluşturma, bileşeni NuGet paketi olarak dağıtma ve C++/WinRT konsol uygulamasından bileşeni kullanma işlemleri gösterilmektedir. Bu makalenin kodunu sağlayan tam örnek için bkz. C#/WinRT yazma örneği. Yazma hakkında daha fazla ayrıntı için bkz. Yazma bileşenleri.
Özellikle Windows Uygulama SDK'sı uygulamalarında kullanılmak üzere C#/WinRT ile WinUI denetimleri yazma konusunda izlenecek yol için, İzlenecek Yol: WinUI 3 denetimleriyle bir C# bileşeni yazma ve C++ Windows Uygulama SDK'sı uygulamasından kullanma makalesine bakın
Önkoşullar
Bu izlenecek yol için aşağıdaki araçlar ve bileşenler gerekir:
- Visual Studio 2022
- .NET 6.0 SDK veya üzeri
- C++/WinRT proje şablonları için C++/WinRT VSIX
C#/WinRT kullanarak basit bir Windows Çalışma Zamanı Bileşeni oluşturma
Visual Studio'da yeni bir proje oluşturarak başlayın. Sınıf Kitaplığı proje şablonunu seçin ve projeyi AuthoringDemo olarak adlandırın. Projede aşağıdaki eklemeleri ve değişiklikleri yapmanız gerekir:
TargetFrameworkAuthoringDemo.csproj dosyasında öğesini güncelleştirin ve öğesine aşağıdaki öğeleriPropertyGroupekleyin:<PropertyGroup> <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> <Platforms>x64</Platforms> </PropertyGroup>Windows Çalışma Zamanı türlerine erişmek için TFM'de belirli bir Windows SDK sürümünü ayarlamanız gerekir. Desteklenen sürüm hakkında daha fazla bilgi için bkz. .NET 6 ve üzeri: TFM seçeneğini kullanma.
Projenize Microsoft.Windows.CsWinRT NuGet paketini yükleyin.
a. Çözüm Gezgini'nde proje düğümüne sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.
b. Microsoft.Windows.CsWinRT NuGet paketini arayın ve en son sürümü yükleyin. Bu kılavuzda C#/WinRT sürüm 1.4.1 kullanılır.
özelliğini ayarlayan
CsWinRTComponentyeniPropertyGroupbir öğe ekleyin. Bu, projenizin bir Windows Çalışma Zamanı bileşeni olduğunu belirtir, böylece projeyi oluştururken bir.winmddosya oluşturulur.<PropertyGroup> <CsWinRTComponent>true</CsWinRTComponent> </PropertyGroup>C#/WinRT proje özelliklerinin tam listesi için C#/WinRT NuGet belgelerine bakın.
Kitaplık
.cssınıf dosyalarını kullanarak çalışma zamanı sınıflarınızı yazabilirsiniz. DosyayaClass1.cssağ tıklayın ve olarak yeniden adlandırınExample.cs. Çalışma zamanı sınıfına bir ortak özellik ve yöntem ekleyen bu dosyaya aşağıdaki kodu ekleyin. Çalışma zamanı bileşeninde kullanıma açmak istediğiniz sınıfları olarakpublicişaretlemeyi unutmayın.namespace AuthoringDemo { public sealed class Example { public int SampleProperty { get; set; } public static string SayHello() { return "Hello from your C# WinRT component"; } } }Artık bileşeninizin dosyasını oluşturmak
.winmdiçin projeyi oluşturabilirsiniz. Çözüm Gezgini'nde projeye sağ tıklayın ve Oluştur'a tıklayın. OluşturulanAuthoringDemo.winmddosyayı derleme çıktı klasörünüzde görürsünüz.
Bileşen için NuGet paketi oluşturma
Geliştiricilerin çoğu Windows Çalışma Zamanı bileşenini NuGet paketi olarak dağıtmak ve paylaşmak isteyecektir. Bir diğer seçenek de bileşeni proje başvurusu olarak kullanmaktır. Aşağıdaki adımlarda AuthoringDemo bileşeninin nasıl paketlenmesi gösterilmektedir. Paketi oluşturduğunuzda, C#/WinRT yerel uygulamalardan tüketimi etkinleştirmek için bileşen ve barındırma derlemelerini pakette yapılandırıyor.
NuGet paketini oluşturmanın birkaç yolu vardır:
Projeyi her oluşturduğunuzda bir NuGet paketi oluşturmak istiyorsanız AuthoringDemo proje dosyasına aşağıdaki özelliği ekleyin ve projeyi yeniden oluşturun.
<PropertyGroup> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> </PropertyGroup>Alternatif olarak, Çözüm Gezgini'ndeAuthoringDemo projesine sağ tıklayıp Paket'i seçerek bir NuGet paketi oluşturabilirsiniz.
Paketi oluşturduğunuzda , Derleme penceresi NuGet paketinin AuthoringDemo.1.0.0.nupkg başarıyla oluşturulduğunu göstermelidir. .NET CLI ile NuGet paket özellikleri hakkında daha fazla bilgi için bkz. dotnet CLI kullanarak paket oluşturma .
C++/WinRT uygulamasından bileşeni kullanma
C#/WinRT tarafından yazılan Windows Çalışma Zamanı bileşenleri, Windows Çalışma Zamanı (WinRT) uyumlu herhangi bir dilde kullanılabilir. Aşağıdaki adımlar, bir C++/WinRT konsol uygulamasında yukarıda yazılan bileşenin nasıl çağrılduğunu gösterir.
Uyarı
C#/.NET uygulamalarından C#/WinRT bileşeninin kullanılması hem paket başvurusu hem de proje başvurusu tarafından desteklenir. Bu senaryo, sıradan bir C# sınıf kitaplığının tüketilmesiyle eşdeğerdir ve çoğu durumda WinRT etkinleştirmesi içermez. C#/WinRT 1.3.5'ten başlayarak, C# tüketicileri için proje başvuruları .NET 6 gerektirir.
Çözümünüze yeni bir C++/WinRT Konsol Uygulaması projesi ekleyin. İsterseniz bu projenin de farklı bir çözümün parçası olabileceğini unutmayın.
a. Çözüm Gezgini'nde çözüm düğümünüzü sağ tıklatın ve Ekle ->Yeni Proje'yi tıklatın.
b. Yeni Proje Ekle iletişim kutusundaC++/WinRT Konsol Uygulaması proje şablonunu arayın. Şablonu seçin ve İleri'ye tıklayın.
ç. Yeni projeye CppConsoleApp adını verin ve Oluştur'a tıklayın.
AuthoringDemo bileşenine NuGet paketi veya proje başvurusu olarak bir başvuru ekleyin.
Seçenek 1 (Paket başvurusu):
a. CppConsoleApp projesine sağ tıklayın ve NuGet paketlerini yönet'i seçin. AuthoringDemo NuGet paketine başvuru eklemek için paket kaynaklarınızı yapılandırmanız gerekebilir. Bunu yapmak için NuGet Paket Yöneticisi'nde Ayarlar simgesine tıklayın ve uygun yola bir paket kaynağı ekleyin.
b. Paket kaynaklarınızı yapılandırdıktan sonra AuthoringDemo paketini arayın ve Yükle'ye tıklayın.
NuGet paketi yükleme
Seçenek 2 (Proje başvurusu):
a. CppConsoleApp projesine sağ tıklayın ve Ekle ->Başvuru'yu seçin. Projeler düğümü altında AuthoringDemo projesine bir başvuru ekleyin.
Bileşeni barındırmak için, eyleme geçilebilir sınıf kayıtları için bir bildirim dosyası eklemeniz gerekir. Yönetilen bileşen barındırma hakkında daha fazla ayrıntı için bkz. Yönetilen bileşen barındırma.
a. Bildirim dosyasını eklemek için projeye yeniden sağ tıklayın ve Ekle -> Yeni Öğe'yi seçin. Metin Dosyası şablonunu arayın ve .manifestCppConsoleApp.exeadlandırın. Çalışma zamanı sınıflarını activatable sınıf kayıt girdilerini kullanarak belirten aşağıdaki içeriği yapıştırın:
<?xml version="1.0" encoding="utf-8"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity version="1.0.0.0" name="CppConsoleApp"/> <file name="WinRT.Host.dll"> <activatableClass name="AuthoringDemo.Example" threadingModel="both" xmlns="urn:schemas-microsoft-com:winrt.v1" /> </file> </assembly>Paketlenmeyen uygulamalar için uygulama bildirim dosyası gereklidir. Paketlenmiş uygulamalar için, uygulama tüketicisinin izlenecek yol: WinUI 3 denetimleriyle bir C# bileşeni oluşturma ve bir C++ Windows Uygulama SDK'sı uygulamasından kullanma başlığı altında açıklandığı gibi paket bildirim dosyasına eyleme dönüştürülebilir sınıfları
Package.appxmanifestkaydetmesi gerekir.b. Projeyi dağıtırken çıkışa bildirim dosyasını dahil etmek için projeyi değiştirin. Çözüm Gezgini'ndeCppConsoleApp.exe.manifest dosyasına tıklayın ve content özelliğini True olarak ayarlayın. Bunun nasıl göründüğüne bir örnek aşağıda verilmiştir.
Projenin Üst Bilgi Dosyaları altında pch.h dosyasını açın ve bileşeninizi eklemek için aşağıdaki kod satırını ekleyin.
#include <winrt/AuthoringDemo.h>Projenin Kaynak Dosyaları altında main.cpp açın ve aşağıdaki içeriklerle değiştirin.
#include "pch.h" #include "iostream" using namespace winrt; using namespace Windows::Foundation; int main() { init_apartment(); AuthoringDemo::Example ex; ex.SampleProperty(42); std::wcout << ex.SampleProperty() << std::endl; std::wcout << ex.SayHello().c_str() << std::endl; }CppConsoleApp projesini derleyin ve çalıştırın. Şimdi aşağıdaki çıkışı görmeniz gerekir.
İlgili konular
Windows developer