NuGet paketleri olarak UI denetimleri oluşturma
Visual Studio 2017'den başlayarak, NuGet paketlerde teslim ettiğiniz UWP ve WPF denetimleri için ek özelliklerden yararlanabilirsiniz. Bu kılavuz, ExtensionSDKasNuGetPackage örneğini kullanarak UWP denetimleri bağlamında bu özelliklerde size yol gösterir. Aksi belirtilmediği sürece aynı durum WPF denetimleri için de geçerlidir.
Önkoşullar
- Visual Studio 2017
- UWP Paketleri Oluşturmayı Anlama
Kitaplık Düzeni Oluştur
Not
Bu yalnızca UWP denetimleri için geçerlidir.
özelliğinin GenerateLibraryLayout
ayarlanması, proje derleme çıkışının nuspec'te tek tek dosya girişlerine gerek kalmadan paketlemeye hazır bir düzende oluşturulmasını sağlar.
Proje özelliklerinden derleme sekmesine gidin ve "Kitaplık Düzeni Oluştur" onay kutusunu işaretleyin. Bu işlem proje dosyasını değiştirir ve şu anda seçili olan derleme yapılandırmanız ve platformunuz için bayrağını true olarak ayarlar GenerateLibraryLayout
.
Alternatif olarak, proje dosyasını düzenleyerek ilk koşulsuz özellik grubuna ekleyin <GenerateLibraryLayout>true</GenerateLibraryLayout>
. Bu, derleme yapılandırmasından ve platformundan bağımsız olarak özelliği uygular.
XAML denetimleri için araç kutusu/varlık bölmesi desteği ekleme
XAML denetiminin Visual Studio'daki XAML tasarımcısının araç kutusunda ve Blend'in Varlıklar bölmesinde görünmesini sağlamak için paket projenizin klasörünün tools
kökünde bir VisualStudioToolsManifest.xml
dosya oluşturun. Denetimin araç kutusunda veya Varlıklar bölmesinde görünmesi gerekmiyorsa bu dosya gerekli değildir.
\build
\lib
\tools
VisualStudioToolsManifest.xml
Dosyanın yapısı aşağıdaki gibidir:
<FileList>
<File Reference = "your_package_file">
<ToolboxItems UIFramework="WPF" VSCategory="vs_category" BlendCategory="blend_category">
<Item Type="type_full_name_1" />
<!-- Any number of additional Items -->
<Item Type="type_full_name_2" />
<Item Type="type_full_name_3" />
</ToolboxItems>
</File>
</FileList>
burada:
- your_package_file: ("ManagedPackage" gibi
ManagedPackage.winmd
denetim dosyanızın adı, bu örnek için kullanılan rastgele bir addır ve başka bir anlamı yoktur). - vs_category: Denetimin Visual Studio tasarımcısının araç kutusunda görünmesi gereken grubun etiketi.
VSCategory
Denetimin araç kutusunda görünmesi için bir gereklidir. ui_framework: Denetimin araç kutusunda görünmesi için Visual Studio 16.7 Önizleme 3 veya sonraki sürümlerin ToolboxItems düğümlerinde özniteliğin gerekli olduğunuUIFramework
unutmayın. - blend_category: Denetimin Blend tasarımcısının Varlıklar bölmesinde görünmesi gereken grubun etiketi. Denetimin
BlendCategory
Varlıklar'da görünmesi için bir gereklidir. - type_full_name_n: Gibi
ManagedPackage.MyCustomControl
ad alanı da dahil olmak üzere her denetimin tam adı. Nokta biçiminin hem yönetilen hem de yerel türler için kullanıldığını unutmayın.
Daha gelişmiş senaryolarda, tek bir paket birden çok <File>
denetim derlemesi içerdiğinde içine <FileList>
birden çok öğe de ekleyebilirsiniz. Denetimlerinizi ayrı kategoriler halinde düzenlemek istiyorsanız, tek <File>
bir düğüm içinde birden çok <ToolboxItems>
düğüme de sahip olabilirsiniz.
Aşağıdaki örnekte, içinde ManagedPackage.winmd
uygulanan denetim Visual Studio ve Blend'de "Yönetilen Paket" adlı bir grupta, "MyCustomControl" ise bu grupta görünür. Tüm bu adlar rastgeledir.
<FileList>
<File Reference = "ManagedPackage.winmd">
<ToolboxItems UIFramework="WPF" VSCategory="Managed Package" BlendCategory="Managed Package">
<Item Type="ManagedPackage.MyCustomControl" />
</ToolboxItems>
</File>
</FileList>
Not
Araç kutusu/varlıklar bölmesinde görmek istediğiniz her denetimi açıkça belirtmeniz gerekir. Bunları biçiminde Namespace.ControlName
belirttiğinizden emin olun.
Denetimlerinize özel simgeler ekleme
Araç kutusu/varlıklar bölmesinde özel bir simge görüntülemek için projenize veya ilgili design.dll
projeye "Namespace.ControlName.extension" adlı bir görüntü ekleyin ve derleme eylemini "Eklenmiş Kaynak" olarak ayarlayın. İlişkilinin AssemblyInfo.cs
ProvideMetadata özniteliğini belirttiğinden de emin olmanız gerekir: [assembly: ProvideMetadata(typeof(RegisterMetadata))]
. Bu örne bakın.
Desteklenen biçimler , , .jpeg
.jpg
, .gif
ve .bmp
biçimleridir.png
. Önerilen biçim, 16 x 16 piksel cinsinden BMP24'dür.
Pembe arka plan çalışma zamanında değiştirilir. Visual Studio teması değiştirildiğinde ve arka plan rengi beklendiğinde simgeler yeniden renklendirilir. Daha fazla bilgi için lütfen Visual Studio için Resimler ve Simgeler'e başvurun.
Aşağıdaki örnekte, proje "ManagedPackage.MyCustomControl.png" adlı bir görüntü dosyası içerir.
Not
Yerel denetimler için simgeyi projeye kaynak design.dll
olarak yerleştirmeniz gerekir.
Belirli Windows platform sürümlerini destekleme
UWP paketlerinin, uygulamanın yüklenebileceği işletim sistemi sürümünün üst ve alt sınırlarını tanımlayan bir TargetPlatformVersion (TPV) ve TargetPlatformMinVersion (TPMinV) vardır. TPV, uygulamanın oluşturulduğu SDK sürümünü de belirtir. UWP paketi yazarken bu özelliklere dikkat edin: Uygulamada tanımlanan platform sürümlerinin sınırları dışında API'lerin kullanılması derlemenin başarısız olmasına veya uygulamanın çalışma zamanında başarısız olmasına neden olur.
Örneğin, denetim paketiniz için TPMinV'yi Windows 10 Anniversary Edition (10.0; Derleme 14393), bu nedenle paketin yalnızca bu alt sınırla eşleşen UWP projeleri tarafından tüketildiğinden emin olmak istiyorsunuz. Paketinizin UWP projeleri tarafından tüketilmesine izin vermek için denetimlerinizi aşağıdaki klasör adlarıyla paketlemeniz gerekir:
\lib\uap10.0.14393\*
\ref\uap10.0.14393\*
NuGet, tüketen projenin TPMinV'sini otomatik olarak denetler ve Windows 10 Anniversary Edition'dan (10.0; Derleme 14393)
WPF durumunda, WPF denetim paketinizin v4.6.1 veya üzeri .NET Framework hedefleyen projeler tarafından tüketilmesi istediğinizi varsayalım. Bunu zorunlu kılmak için denetimlerinizi aşağıdaki klasör adlarıyla paketlemeniz gerekir:
\lib\net461\*
\ref\net461\*
Tasarım zamanı desteği ekleme
Denetim özelliklerinin özellik denetçisinde nerede gösterileceği yapılandırmak için özel donatıcılar vb. ekleyin, dosyanızı design.dll
hedef platforma uygun şekilde klasörün içine lib\uap10.0.14393\Design
yerleştirin. Ayrıca, Şablonu > Düzenle Kopyasını Düzenle özelliğinin çalıştığından emin olmak için, klasörüne birleştirdiğinden ve tüm kaynak sözlüklerini <your_assembly_name>\Themes
eklemeniz Generic.xaml
gerekir (yine, gerçek derleme adınızı kullanarak). (Bu dosyanın bir denetimin çalışma zamanı davranışı üzerinde hiçbir etkisi yoktur.) Bu nedenle klasör yapısı aşağıdaki gibi görünür:
\lib
\uap10.0.14393
\Design
\MyControl.design.dll
\your_assembly_name
\Themes
Generic.xaml
WPF için, WPF denetim paketinizin v4.6.1 veya üzeri .NET Framework hedefleyen projeler tarafından tüketilmesine istediğiniz örnekle devam edin:
\lib
\net461
\Design
\MyControl.design.dll
\your_assembly_name
\Themes
Generic.xaml
Not
Varsayılan olarak, denetim özellikleri özellik denetçisindeki Çeşitli kategorisi altında gösterilir.
Dizeleri ve kaynakları kullanma
Denetiminiz veya tüketen UWP projesi tarafından kullanılabilecek dize kaynaklarını (.resw
) paketinize ekleyebilir, dosyanın Derleme Eylemi özelliğini .resw
PRIResource olarak ayarlayabilirsiniz.
Örneğin, ExtensionSDKasNuGetPackage örneğindeki MyCustomControl.cs dosyasına bakın.
Not
Bu yalnızca UWP denetimleri için geçerlidir.