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

  1. Visual Studio 2017
  2. 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ğunu UIFramework 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.MyCustomControlad 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>

An example control as it appear in Visual Studio

An example control as it appear in Blend

Not

Araç kutusu/varlıklar bölmesinde görmek istediğiniz her denetimi açıkça belirtmeniz gerekir. Bunları biçiminde Namespace.ControlNamebelirttiğ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, .gifve .bmpbiçimleridir.png. Önerilen biçim, 16 x 16 piksel cinsinden BMP24'dür.

Tool box icon sample

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.

Setting a custom icon in a project

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 .reswPRIResource olarak ayarlayabilirsiniz.

Örneğin, ExtensionSDKasNuGetPackage örneğindeki MyCustomControl.cs dosyasına bakın.

Not

Bu yalnızca UWP denetimleri için geçerlidir.

Ayrıca bkz.