Visual Studio 2017 veya 2019 ile Xamarin için paketler oluşturma
Xamarin paketi, çalışma zamanı işletim sistemine bağlı olarak iOS, Android ve Windows yerel API'ler kullanan kod içerir. Bunu yapmak kolay olsa da, geliştiricilerin paketi ortak bir API yüzey alanı aracılığıyla bir PCL veya .NET Standard kitaplıklarından kullanmasına izin vermek tercih edilir.
Bu kılavuzda iOS, Android ve Windows mobil projelerinde kullanılabilecek platformlar arası bir NuGet paketi oluşturmak için Visual Studio 2017 veya 2019'u kullanırsınız.
- Önkoşullar
- Proje yapısını ve soyutlama kodunu oluşturma
- Platforma özgü kodunuzu yazma
- .nuspec dosyasını oluşturma ve güncelleştirme
- Bileşeni paketleme
- İlgili konular
Önkoşullar
- Evrensel Windows Platformu (UWP) ve Xamarin ile Visual Studio 2017 veya 2019. Community sürümünü visualstudio.com ücretsiz olarak yükleyin; Professional ve Enterprise sürümlerini de kullanabilirsiniz. UWP ve Xamarin araçlarını eklemek için Özel yükleme'yi seçin ve uygun seçenekleri işaretleyin.
- CLI'NuGet. nuget.org/downloads nuget.exe en son sürümünü indirin ve istediğiniz konuma kaydedin. Ardından, henüz değilse path ortam değişkeninize bu konumu ekleyin.
Not
nuget.exe, yükleyici değil CLI aracının kendisidir, bu nedenle indirilen dosyayı çalıştırmak yerine tarayıcınızdan kaydettiğinizden emin olun.
Proje yapısını ve soyutlama kodunu oluşturma
Visual Studio için Platformlar Arası .NET Standart Eklenti Şablonları uzantısını indirin ve çalıştırın. Bu şablonlar, bu kılavuz için gerekli proje yapısını oluşturmayı kolaylaştırır.
Visual Studio 2017'de Dosya > Yeni > Project, araması
Plugin
yapın, Platformlar Arası .NET Standart Kitaplık Eklentisi şablonunu seçin, adı LoggingLibrary olarak değiştirin ve Tamam'a tıklayın.Visual Studio 2019'da Dosya > Yeni > Project, araması
Plugin
yapın, Platformlar Arası .NET Standart Kitaplık Eklentisi şablonunu seçin ve İleri'ye tıklayın.Adı LoggingLibrary olarak değiştirin ve Oluştur'a tıklayın.
Sonuçta elde edilen çözüm, platforma özgü çeşitli projelerin yanı sıra iki Paylaşılan proje içerir:
ILoggingLibrary
Dosyasında yer alanILoggingLibrary.shared.cs
proje, bileşenin genel arabirimini (API yüzey alanı) tanımlar. Burası, kitaplığınızın arabirimini tanımladığınız yerdir.- Diğer Paylaşılan proje,
CrossLoggingLibrary.shared.cs
çalışma zamanında soyut arabirimin platforma özgü uygulamasını bulan kodu içerir. Normalde bu dosyayı değiştirmeniz gerekmez. - gibi
LoggingLibrary.android.cs
platforma özgü projeler, her biri kendi (LoggingLibraryImplementation.cs
VS 2017) veyaLoggingLibrary.<PLATFORM>.cs
(VS 2019) dosyalarında arabirimin yerel bir uygulamasını içerir. Burası, kitaplığınızın kodunu oluşturduğunuz yerdir.
Varsayılan olarak, projenin ILoggingLibrary.shared.cs dosyası ILoggingLibrary
bir arabirim tanımı içerir, ancak yöntem içermez. Bu izlenecek yol için aşağıdaki gibi bir Log
yöntem ekleyin:
using System;
using System.Collections.Generic;
using System.Text;
namespace Plugin.LoggingLibrary
{
/// <summary>
/// Interface for LoggingLibrary
/// </summary>
public interface ILoggingLibrary
{
/// <summary>
/// Log a message
/// </summary>
void Log(string text);
}
}
Platforma özgü kodunuzu yazma
Arabirimin ve yöntemlerinin ILoggingLibrary
platforma özgü bir uygulamasını uygulamak için aşağıdakileri yapın:
Her platform projesinin
LoggingLibraryImplementation.cs
(VS 2017) veyaLoggingLibrary.<PLATFORM>.cs
(VS 2019) dosyasını açın ve gerekli kodu ekleyin. Örneğin (platform projesiniAndroid
kullanarak):using System; using System.Collections.Generic; using System.Text; namespace Plugin.LoggingLibrary { /// <summary> /// Implementation for Feature /// </summary> public class LoggingLibraryImplementation : ILoggingLibrary { /// <summary> /// Log a message /// </summary> public void Log(string text) { throw new NotImplementedException("Called Log on Android"); } } }
Desteklemek istediğiniz her platform için projelerde bu uygulamayı yineleyin.
Çalışmanızı denetlemek ve bir sonraki paketlediğiniz yapıtları üretmek için çözüme sağ tıklayın ve Çözüm Derle'yi seçin. Eksik başvurularla ilgili hatalar alırsanız, çözüme sağ tıklayın, bağımlılıkları yüklemek için Paketleri NuGet Geri Yükle'yi seçin ve yeniden derleyin.
Not
Visual Studio 2019 kullanıyorsanız, NuGet Paketlerini Geri Yükle'yi seçip yeniden derlemeye çalışmadan önce sürümünde sürümünü MSBuild.Sdk.Extras
olarak 2.0.54
LoggingLibrary.csproj
değiştirmeniz gerekir. Bu dosyaya yalnızca önce projeye sağ tıklayıp (çözümün altında) ve ardından Unload Project
kaldırılan projeye sağ tıklayıp öğesini seçerek Edit LoggingLibrary.csproj
erişilebilir.
Not
iOS için derleme yapmak için, Visual Studio için Xamarin.iOS'e giriş bölümünde açıklandığı gibi Visual Studio bağlı bir ağa bağlı Mac'e ihtiyacınız vardır. Mac'iniz yoksa yapılandırma yöneticisindeki iOS projesini temizleyin (yukarıdaki 3. adım).
.nuspec dosyasını oluşturma ve güncelleştirme
Bir komut istemi açın, dosyanın bulunduğu
.sln
yerin bir düzeyi altındaki klasöre gidinLoggingLibrary
ve ilkPackage.nuspec
dosyayı oluşturmak için NuGetspec
komutunu çalıştırın:nuget spec
Bu dosyayı olarak
LoggingLibrary.nuspec
yeniden adlandırın ve bir düzenleyicide açın.dosyayı aşağıdakiyle eşleşecek şekilde güncelleştirin ve YOUR_NAME uygun bir değerle değiştirin. Özellikle değerin
<id>
nuget.org genelinde benzersiz olması gerekir ( paket oluşturma bölümünde açıklanan adlandırma kurallarına bakın). Ayrıca yazar ve açıklama etiketlerini de güncelleştirmeniz gerektiğini veya paketleme adımı sırasında bir hatayla karşılaşırsınız.<?xml version="1.0"?> <package > <metadata> <id>LoggingLibrary.YOUR_NAME</id> <version>1.0.0</version> <title>LoggingLibrary</title> <authors>YOUR_NAME</authors> <owners>YOUR_NAME</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Awesome application logging utility</description> <releaseNotes>First release</releaseNotes> <copyright>Copyright 2018</copyright> <tags>logger logging logs</tags> </metadata> </package>
İpucu
ile paket sürümünüzü -alpha
-beta
sonekleyebilirsiniz veya -rc
paketinizi yayın öncesi olarak işaretlemek için yayın öncesi sürümler hakkında daha fazla bilgi için Yayın öncesi sürümleri'ne bakın.
Başvuru derlemeleri ekleme
Platforma özgü başvuru derlemelerini eklemek için, öğesinin öğesine LoggingLibrary.nuspec
desteklenen platformlarınız için uygun şekilde aşağıdakileri <files>
ekleyin:
<!-- Insert below <metadata> element -->
<files>
<!-- Cross-platform reference assemblies -->
<file src="Plugin.LoggingLibrary\bin\Release\Plugin.LoggingLibrary.dll" target="lib\netstandard1.4\Plugin.LoggingLibrary.dll" />
<file src="Plugin.LoggingLibrary\bin\Release\Plugin.LoggingLibrary.xml" target="lib\netstandard1.4\Plugin.LoggingLibrary.xml" />
<file src="Plugin.LoggingLibrary.Abstractions\bin\Release\Plugin.LoggingLibrary.Abstractions.dll" target="lib\netstandard1.4\Plugin.LoggingLibrary.Abstractions.dll" />
<file src="Plugin.LoggingLibrary.Abstractions\bin\Release\Plugin.LoggingLibrary.Abstractions.xml" target="lib\netstandard1.4\Plugin.LoggingLibrary.Abstractions.xml" />
<!-- iOS reference assemblies -->
<file src="Plugin.LoggingLibrary.iOS\bin\Release\Plugin.LoggingLibrary.dll" target="lib\Xamarin.iOS10\Plugin.LoggingLibrary.dll" />
<file src="Plugin.LoggingLibrary.iOS\bin\Release\Plugin.LoggingLibrary.xml" target="lib\Xamarin.iOS10\Plugin.LoggingLibrary.xml" />
<!-- Android reference assemblies -->
<file src="Plugin.LoggingLibrary.Android\bin\Release\Plugin.LoggingLibrary.dll" target="lib\MonoAndroid10\Plugin.LoggingLibrary.dll" />
<file src="Plugin.LoggingLibrary.Android\bin\Release\Plugin.LoggingLibrary.xml" target="lib\MonoAndroid10\Plugin.LoggingLibrary.xml" />
<!-- UWP reference assemblies -->
<file src="Plugin.LoggingLibrary.UWP\bin\Release\Plugin.LoggingLibrary.dll" target="lib\UAP10\Plugin.LoggingLibrary.dll" />
<file src="Plugin.LoggingLibrary.UWP\bin\Release\Plugin.LoggingLibrary.xml" target="lib\UAP10\Plugin.LoggingLibrary.xml" />
</files>
Not
DLL ve XML dosyalarının adlarını kısaltmak için, belirli bir projeye sağ tıklayın, Kitaplık sekmesini seçin ve derleme adlarını değiştirin.
Bağımlılık ekleme
Yerel uygulamalar için belirli bağımlılıklarınız varsa, öğesini öğeleriyle birlikte <group>
kullanarak <dependencies>
bunları belirtin, örneğin:
<!-- Insert within the <metadata> element -->
<dependencies>
<group targetFramework="MonoAndroid">
<!--MonoAndroid dependencies go here-->
</group>
<group targetFramework="Xamarin.iOS10">
<!--Xamarin.iOS10 dependencies go here-->
</group>
<group targetFramework="uap">
<!--uap dependencies go here-->
</group>
</dependencies>
Örneğin, aşağıdakiler iTextSharp'ı UAP hedefi için bağımlılık olarak ayarlar:
<dependencies>
<group targetFramework="uap">
<dependency id="iTextSharp" version="5.5.9" />
</group>
</dependencies>
Son .nuspec
Son .nuspec
dosyanız artık aşağıdaki gibi görünmelidir ve burada da YOUR_NAME uygun bir değerle değiştirilmelidir:
<?xml version="1.0"?>
<package >
<metadata>
<id>LoggingLibrary.YOUR_NAME</id>
<version>1.0.0</version>
<title>LoggingLibrary</title>
<authors>YOUR_NAME</authors>
<owners>YOUR_NAME</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Awesome application logging utility</description>
<releaseNotes>First release</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>logger logging logs</tags>
<dependencies>
<group targetFramework="MonoAndroid">
<!--MonoAndroid dependencies go here-->
</group>
<group targetFramework="Xamarin.iOS10">
<!--Xamarin.iOS10 dependencies go here-->
</group>
<group targetFramework="uap">
<dependency id="iTextSharp" version="5.5.9" />
</group>
</dependencies>
</metadata>
<files>
<!-- Cross-platform reference assemblies -->
<file src="Plugin.LoggingLibrary\bin\Release\Plugin.LoggingLibrary.dll" target="lib\netstandard1.4\Plugin.LoggingLibrary.dll" />
<file src="Plugin.LoggingLibrary\bin\Release\Plugin.LoggingLibrary.xml" target="lib\netstandard1.4\Plugin.LoggingLibrary.xml" />
<file src="Plugin.LoggingLibrary.Abstractions\bin\Release\Plugin.LoggingLibrary.Abstractions.dll" target="lib\netstandard1.4\Plugin.LoggingLibrary.Abstractions.dll" />
<file src="Plugin.LoggingLibrary.Abstractions\bin\Release\Plugin.LoggingLibrary.Abstractions.xml" target="lib\netstandard1.4\Plugin.LoggingLibrary.Abstractions.xml" />
<!-- iOS reference assemblies -->
<file src="Plugin.LoggingLibrary.iOS\bin\Release\Plugin.LoggingLibrary.dll" target="lib\Xamarin.iOS10\Plugin.LoggingLibrary.dll" />
<file src="Plugin.LoggingLibrary.iOS\bin\Release\Plugin.LoggingLibrary.xml" target="lib\Xamarin.iOS10\Plugin.LoggingLibrary.xml" />
<!-- Android reference assemblies -->
<file src="Plugin.LoggingLibrary.Android\bin\Release\Plugin.LoggingLibrary.dll" target="lib\MonoAndroid10\Plugin.LoggingLibrary.dll" />
<file src="Plugin.LoggingLibrary.Android\bin\Release\Plugin.LoggingLibrary.xml" target="lib\MonoAndroid10\Plugin.LoggingLibrary.xml" />
<!-- UWP reference assemblies -->
<file src="Plugin.LoggingLibrary.UWP\bin\Release\Plugin.LoggingLibrary.dll" target="lib\UAP10\Plugin.LoggingLibrary.dll" />
<file src="Plugin.LoggingLibrary.UWP\bin\Release\Plugin.LoggingLibrary.xml" target="lib\UAP10\Plugin.LoggingLibrary.xml" />
</files>
</package>
Bileşeni paketleme
Tamamlandıktan .nuspec
sonra pakete eklemeniz gereken tüm dosyalara başvurmak için komutunu çalıştırmaya pack
hazırsınız:
nuget pack LoggingLibrary.nuspec
Bu, oluşturur LoggingLibrary.YOUR_NAME.1.0.0.nupkg
. Bu dosyayı NuGet Paket Gezgini gibi bir araçta açıp tüm düğümleri genişleterek aşağıdaki içeriği görürsünüz:
İpucu
Dosya .nupkg
yalnızca farklı bir uzantıya sahip bir ZIP dosyasıdır. Ayrıca paket içeriğini inceleyebilir ve ardından olarak değiştirebilirsiniz .nupkg
.zip
, ancak paketi nuget.org'a yüklemeden önce uzantıyı geri yüklemeyi unutmayın.
Paketinizi diğer geliştiricilerin kullanımına açmak için Paket yayımlama yönergelerini izleyin.
İlgili konular
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin