.NET Core uygulamalarını Visual Studio
Bir .NET Core uygulamasını, uygulama ikililerinizi içeren, ancak hedef sistemde .NET Core'ın varlığına bağlı olan bir çerçeveye bağımlı dağıtım olarak veya hem uygulamanızı hem de .NET Core ikililerini içeren kendi içinde bir dağıtım olarak dağıtabilirsiniz. .NET Core uygulama dağıtımına genel bakış için bkz. .NET Core Uygulama Dağıtımı.
Aşağıdaki bölümlerde, aşağıdaki dağıtım Microsoft Visual Studio oluşturmak için Microsoft Visual Studio nasıl kullanabileceğiniz listelanmaktadır:
- Çerçeveye bağımlı dağıtım
- Üçüncü taraf bağımlılıklarla çerçeveye bağımlı dağıtım
- Kendi içinde dağıtım
- Üçüncü taraf bağımlılıklarla kendi içinde dağıtım
.NET Core uygulamaları Visual Studio için bkz. .NET Core bağımlılıkları ve gereksinimleri.
Çerçeveye bağımlı dağıtım
Üçüncü taraf bağımlılıkları olmayan bir çerçeveye bağımlı dağıtımı dağıtmak için uygulamayı oluşturma, test etme ve yayımlama gerekir. C# ile yazılmış basit bir örnek, işlemi göstermektedir.
Projeyi oluşturun.
Dosya Yeni > Dosya'Project. > Yeni Project iletişim kutusunda, Yüklü proje türleri bölmesinde dilinizin (C# veya Visual Basic) proje kategorilerini genişletin, .NET Core'ı seçin ve orta bölmede Konsol Uygulaması (.NET Core) şablonunu seçin. Ad metin kutusuna "FDD" gibi bir proje adı girin. Tamam düğmesini seçin.
Uygulamanın kaynak kodunu ekleyin.
Düzenleyicide Program.cs veya Program.vb dosyasını açın ve otomatik olarak yenilenmiş kodu aşağıdaki kodla değiştirin. Kullanıcıdan metin girmesini ve kullanıcı tarafından girilen tek tek sözcükleri görüntülemesini istenir. Giriş metninde sözcükleri
\w+ayırmak için normal ifadeyi kullanır.using System; using System.Text.RegularExpressions; namespace Applications.ConsoleApps { public class ConsoleParser { public static void Main() { Console.WriteLine("Enter any text, followed by <Enter>:\n"); String s = Console.ReadLine(); ShowWords(s); Console.Write("\nPress any key to continue... "); Console.ReadKey(); } private static void ShowWords(String s) { String pattern = @"\w+"; var matches = Regex.Matches(s, pattern); if (matches.Count == 0) { Console.WriteLine("\nNo words were identified in your input."); } else { Console.WriteLine($"\nThere are {matches.Count} words in your string:"); for (int ctr = 0; ctr < matches.Count; ctr++) { Console.WriteLine($" #{ctr,2}: '{matches[ctr].Value}' at position {matches[ctr].Index}"); } } } } }Imports System.Text.RegularExpressions Namespace Applications.ConsoleApps Public Module ConsoleParser Public Sub Main() Console.WriteLine("Enter any text, followed by <Enter>:") Console.WriteLine() Dim s = Console.ReadLine() ShowWords(s) Console.Write($"{vbCrLf}Press any key to continue... ") Console.ReadKey() End Sub Private Sub ShowWords(s As String) Dim pattern = "\w+" Dim matches = Regex.Matches(s, pattern) Console.WriteLine() If matches.Count = 0 Then Console.WriteLine("No words were identified in your input.") Else Console.WriteLine($"There are {matches.Count} words in your string:") For ctr = 0 To matches.Count - 1 Console.WriteLine($" #{ctr,2}: '{matches(ctr).Value}' at position {matches(ctr).Index}") Next End If Console.WriteLine() End Sub End Module End NamespaceUygulamanıza bir Hata ayıklama derlemesi oluşturun.
Derleme > Çözümü'lerini seçin. Hata AyıklamaYı Başlat'ı seçerek de uygulamanın Hata Ayıklama derlemesi derlenmiş ve > çalıştırabilirsiniz.
Uygulamanızı dağıtın.
Programda hata ayıkladikten ve test edildikten sonra, uygulamanıza dağıtılacak dosyaları oluşturun. Bir Visual Studio yayımlamak için şunları yapın:
Uygulamanın Bir Yayın (Hata Ayıklama yerine) sürümünü derlemek için araç çubuğunda Hata Ayıklama olan çözüm yapılandırmasını Yayın olarak değiştirebilirsiniz.
Içinde projeye (çözüme değil) sağ tıklayın ve Çözüm Gezgini'yi seçin.
Yayımla sekmesinde Yayımla'yı seçin. Visual Studio oluşturan dosyaları yerel dosya sistemine yazar.
Yayımla sekmesi artık tek bir profil (FolderProfile) gösterir. Profilin yapılandırma ayarları, sekmenin Özet bölümünde gösterilir.
Sonuçta elde edilen dosyalar Windows ve projenizin
Publishpublish.\bin\release\netcoreapp2.1 alt dizininin alt dizininde yer alan Unix sistemleri üzerinde adlı bir dizine yerleştirilir.
Yayımlama işlemi, uygulamanın dosyalarıyla birlikte, uygulamayla ilgili hata ayıklama bilgilerini içeren bir program veritabanı (.pdb) dosyası da gösterir. Dosya öncelikli olarak özel durumların hata ayıklaması için yararlıdır. Bunu uygulamanın dosyalarıyla paketleyemebilirsiniz. Ancak, bunu, uygulamanın Yayın derlemesinde hata ayıklamak istediğiniz durumda kaydetmeniz gerekir.
Uygulama dosyalarının tam kümelerini herhangi bir şekilde dağıtın. Örneğin, bunları bir Zip dosyasında paketleyebilirsiniz, basit bir komut kullanabilir veya istediğiniz herhangi bir copy yükleme paketiyle dağıtabilirsiniz. Yüklendikten sonra kullanıcılar, komutunu kullanarak ve gibi uygulama dotnet dosya adını sağlayarak uygulamanızı yürütebilir. dotnet fdd.dll
Uygulama ikili dosyalarına ek olarak, yükleyiciniz paylaşılan çerçeve yükleyicisini de paketlesin veya uygulama yüklemesi kapsamında önkoşul olarak bunu denetlemeli. Paylaşılan çerçevenin yüklenmesi, makine genelinde olduğu için Yönetici/kök erişimi gerektirir.
Üçüncü taraf bağımlılıklarla çerçeveye bağımlı dağıtım
Bir veya daha fazla üçüncü taraf bağımlılığıyla çerçeveye bağımlı bir dağıtım dağıtmak için tüm bağımlılıkların projeniz tarafından kullanılabilir olması gerekir. Aşağıdaki ek adımlar, uygulama oluşturmadan önce gereklidir:
Projenize NuGet Paket Yöneticisi pakete başvuru eklemek için NuGet paketini kullanın; ve paketi sisteminiz üzerinde zaten kullanılamıyorsa yükleyin. Paket yöneticisini açmak için Araçlar'ı seçin > NuGet Paket Yöneticisi > Çözüm NuGet Paketlerini Yönet'i seçin.
Üçüncü taraf bağımlılıkların (örneğin, ) sisteminize yüklü olduğunu onaylayın ve yüklü
Newtonsoft.Jsondeğilse bunları yükleyin. Yüklü sekmesinde, sisteminize NuGet paketleri listeler. ListedeNewtonsoft.Jsonyoksa Gözat sekmesini seçin ve arama kutusuna "Newtonsoft.Json" yazın. ÖğesiniNewtonsoft.Jsonseçin ve sağ bölmede Yükle'yi seçmeden önce projenizi seçin.Sisteminize zaten yüklüyse, Çözüm için Paketleri Yönet sekmesinin sağ bölmesinde projenizi
Newtonsoft.Jsonseçerek projenize ekleyin.
Üçüncü taraf bağımlılıklarına sahip bir çerçeveye bağımlı dağıtım yalnızca üçüncü taraf bağımlılıkları kadar taşınabilirdir. Örneğin, bir üçüncü taraf kitaplığı yalnızca macOS'u destekliyorsa, uygulama tek bir Windows taşınabilir değildir. Üçüncü taraf bağımlılığının kendisi yerel koda bağımlı olduğunda bu durum gerçekleşir. Bunun iyi bir örneği, libuvüzerinde yerel bir bağımlılık gerektiren Kestrel sunucusudur. Bu tür bir üçüncü taraf bağımlılığına sahip bir uygulama için FDD oluşturulduğunda, yayımlanan çıktı yerel bağımlılığın desteklediği (ve kendi NuGet paketinde var olan) her Çalışma Zamanı Tanımlayıcısı (RID) için bir klasör içerir.
Üçüncü taraf bağımlılıkları olmadan kendi içinde dağıtım
Üçüncü taraf bağımlılıkları olmayan kendi içinde bir dağıtımı dağıtmak için projeyi oluşturma, csproj dosyasını değiştirme, uygulamayı oluşturma, test etme ve yayımlama gerekir. C# ile yazılmış basit bir örnek, işlemi göstermektedir. Tıpkı çerçeveye bağımlı bir dağıtımda olduğu gibi projenizi oluşturarak, kodlar ve testlerle başlarsiniz:
Projeyi oluşturun.
Dosya Yeni > Dosya'Project. > Yeni Project iletişim kutusunda, Yüklü proje türleri bölmesinde dilinizin (C# veya Visual Basic) proje kategorilerini genişletin, .NET Core'ı seçin ve orta bölmede Konsol Uygulaması (.NET Core) şablonunu seçin. Ad metin kutusuna "SCD" gibi bir proje adı girin ve Tamam düğmesini seçin.
Uygulamanın kaynak kodunu ekleyin.
Düzenleyicide Program.cs veya Program.vb dosyasını açın ve otomatik olarak yenilenmiş kodu aşağıdaki kodla değiştirin. Kullanıcıdan metin girmesini ve kullanıcı tarafından girilen tek tek sözcükleri görüntülemesini istenir. Giriş metninde sözcükleri
\w+ayırmak için normal ifadeyi kullanır.using System; using System.Text.RegularExpressions; namespace Applications.ConsoleApps { public class ConsoleParser { public static void Main() { Console.WriteLine("Enter any text, followed by <Enter>:\n"); String s = Console.ReadLine(); ShowWords(s); Console.Write("\nPress any key to continue... "); Console.ReadKey(); } private static void ShowWords(String s) { String pattern = @"\w+"; var matches = Regex.Matches(s, pattern); if (matches.Count == 0) { Console.WriteLine("\nNo words were identified in your input."); } else { Console.WriteLine($"\nThere are {matches.Count} words in your string:"); for (int ctr = 0; ctr < matches.Count; ctr++) { Console.WriteLine($" #{ctr,2}: '{matches[ctr].Value}' at position {matches[ctr].Index}"); } } } } }Imports System.Text.RegularExpressions Namespace Applications.ConsoleApps Public Module ConsoleParser Public Sub Main() Console.WriteLine("Enter any text, followed by <Enter>:") Console.WriteLine() Dim s = Console.ReadLine() ShowWords(s) Console.Write($"{vbCrLf}Press any key to continue... ") Console.ReadKey() End Sub Private Sub ShowWords(s As String) Dim pattern = "\w+" Dim matches = Regex.Matches(s, pattern) Console.WriteLine() If matches.Count = 0 Then Console.WriteLine("No words were identified in your input.") Else Console.WriteLine($"There are {matches.Count} words in your string:") For ctr = 0 To matches.Count - 1 Console.WriteLine($" #{ctr,2}: '{matches(ctr).Value}' at position {matches(ctr).Index}") Next End If Console.WriteLine() End Sub End Module End NamespaceGenelleştirme sabit modunu kullanmak isteyip istemediklerini belirleme.
Özellikle de uygulamanız Linux'u hedef alıyorsa, genelleştirme sabit modundan faydalanarak dağıtım toplam boyutunu azaltabilirsiniz. Globalleştirme sabit modu, genel olarak farkında olunmayan ve sabit kültürün biçimlendirme kuralları, büyük/küçük/küçük karakter kuralları ve dize karşılaştırması ile sıralamasını kullana uygulamalar için kullanışlıdır.
Sabit modu etkinleştirmek için, Çözüm Gezgini'de projenize (çözüme değil) sağ tıklayın ve SCD.csproj'u düzenle veya SCD.vbproj'u Düzenle'yi seçin. Ardından dosyaya aşağıdaki vurgulanmış satırları ekleyin:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> <ItemGroup> <RuntimeHostConfigurationOption Include="System.Globalization.Invariant" Value="true" /> </ItemGroup> </Project>Uygulamanıza bir Hata ayıklama derlemesi oluşturun.
Derleme > Çözümü'lerini seçin. Hata AyıklamaYı Başlat'ı seçerek de uygulamanın Hata Ayıklama derlemesi derlenmiş ve > çalıştırabilirsiniz. Bu hata ayıklama adımı, ana bilgisayar platformunu kullanarak uygulamanız üzerinde çalışan sorunları tanımlamanıza olanak sağlar. Yine de bunu hedef platformların her biri üzerinde test etmek zorundasiniz.
Genelleştirme sabit modunu etkinleştirdiyseniz, kültüre duyarlı verilerin olmamasının uygulamanıza uygun olup olmadığını test edin.
Hata ayıklamayı bitirdikten sonra kendi içinde dağıtımınızı yayımlayın:
Programı ayıkladikten ve test ettikten sonra, hedeflemektedir her platform için uygulamanıza dağıtılacak dosyaları oluşturun.
Uygulamanızı Visual Studio yayımlamak için şunları yapın:
Uygulamanıza hedefleyecek platformları tanımlayın.
Içinde projenize (çözüme değil) sağ tıklayın Çözüm Gezgini SCD.csproj'u düzenle'yi seçin.
Csproj dosyanız bölümünde, uygulama hedeflerinizi tanımlayan bir etiket oluşturun ve hedefleyceniz her platformun çalışma
<RuntimeIdentifiers><PropertyGroup>zamanı tanımlayıcısını (RID) belirtin. AYRıCA, RI'leri ayırmak için noktalı virgül eklemeniz gerekir. Çalışma zamanı tanımlayıcılarının listesi için bkz. Çalışma zamanı tanımlayıcı kataloğu.
Örneğin, aşağıdaki örnek, uygulamanın 64 bit Windows 10 işletim sistemlerinde ve 64 bit OS X Sürüm 10.11 işletim sisteminde çalıştır çalıştırı olduğunu gösterir.
<PropertyGroup> <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers> </PropertyGroup><RuntimeIdentifiers>öğesi,<PropertyGroup>csproj dosyanıza sahip olduğunuz herhangi bir öğeye gidebilir. Bu bölümün ilerleyen kısımlarında eksiksiz bir örnek csproj dosyası görüntülenir.Uygulamalarınızı yayımlayın.
Programı ayıkladikten ve test ettikten sonra, hedeflemektedir her platform için uygulamanıza dağıtılacak dosyaları oluşturun.
Uygulamanızı Visual Studio yayımlamak için şunları yapın:
Uygulamanın Bir Yayın (Hata Ayıklama yerine) sürümünü derlemek için araç çubuğunda Hata Ayıklama olan çözüm yapılandırmasını Yayın olarak değiştirebilirsiniz.
Içinde projeye (çözüme değil) sağ tıklayın ve Çözüm Gezgini'yi seçin.
Yayımla sekmesinde Yayımla'yı seçin. Visual Studio oluşturan dosyaları yerel dosya sistemine yazar.
Yayımla sekmesi artık tek bir profil (FolderProfile) gösterir. Profilin yapılandırma ayarları, sekmenin Özet bölümünde gösterilir. Hedef Çalışma Zamanı hangi çalışma zamanının yayımlan olduğunu, Hedef Konum ise kendi içinde dağıtım dosyalarının nereye yazıldığı tanımlar.
Visual Studio tüm yayımlanan dosyaları varsayılan olarak tek bir dizine yazar. Kolaylık sağlamak için, her hedef çalışma zamanı için ayrı profiller oluşturmak ve yayımlanmış dosyaları platforma özgü bir dizine yer sağlamak en iyisidir. Bu, her hedef platform için ayrı bir yayımlama profili oluşturmayı içerir. Şimdi aşağıdaki adımları gerçekleştirerek her platform için uygulamayı yeniden oluşturabilirsiniz:
Yayımla iletişim kutusunda Yeni profil oluştur'a tıklayın.
Yayımlama hedefi seçin iletişim kutusunda Klasör konumu seçin seçeneğini bin\Release\PublishOutput\win10-x64 olarak değiştirebilirsiniz. Tamam’ı seçin.
Profil listesinde yeni profili (FolderProfile1) seçin ve Hedef Çalışma Zamanı'nın olduğundan emin
win10-x64olun. Değilse, Ayarlar. Profil Çalışma Zamanı Ayarlar Hedef Çalışma Zamanı'nın olarak değiştirerekwin10-x64Kaydet'i seçin. Aksi takdirde İptal'i seçin.Yayımla'yı seçerek 64 bitlik platformlar için Windows 10 yayımlayın.
Platform için profil oluşturmak için önceki adımları tekrar
osx.10.11-x64izleyin. Hedef Konum bin\Release\PublishOutput\osx.10.11-x64, Hedef Çalışma Zamanı iseosx.10.11-x64olur. Bu profile Visual Studio adı FolderProfile2'dir.
Her hedef konum, uygulamanızı başlatmak için gereken tüm dosya kümelerini (hem uygulama dosyalarınız hem de tüm .NET Core dosyaları) içerir.
Yayımlama işlemi, uygulamanın dosyalarıyla birlikte, uygulamayla ilgili hata ayıklama bilgilerini içeren bir program veritabanı (.pdb) dosyası da gösterir. Dosya öncelikli olarak özel durumların hata ayıklaması için yararlıdır. Bunu uygulamanın dosyalarıyla paketleyemebilirsiniz. Ancak, bunu, uygulamanın Yayın derlemesinde hata ayıklamak istediğiniz durumda kaydetmeniz gerekir.
Yayımlanan dosyaları, herhangi bir şekilde dağıtın. Örneğin, bunları bir Zip dosyasında paketleyebilirsiniz, basit bir komut kullanabilir veya istediğiniz herhangi bir copy yükleme paketiyle dağıtabilirsiniz.
Aşağıda, bu proje için tam csproj dosyası velanmıştır.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
</Project>
Üçüncü taraf bağımlılıklarla kendi içinde dağıtım
Bir veya daha fazla üçüncü taraf bağımlılığıyla kendi içinde dağıtım dağıtmak, bağımlılıkları eklemeyi içerir. Aşağıdaki ek adımlar, uygulama oluşturmadan önce gereklidir:
Projenize NuGet Paket Yöneticisi pakete başvuru eklemek için NuGet paketini kullanın; ve paketi sisteminiz üzerinde zaten kullanılamıyorsa yükleyin. Paket yöneticisini açmak için Araçlar'ı seçin > NuGet Paket Yöneticisi > Çözüm NuGet Paketlerini Yönet'i seçin.
Üçüncü taraf bağımlılıkların (örneğin, ) sisteminize yüklerini onaylayın ve yüklü değilse
Newtonsoft.Jsonyükleyin. Yüklü sekmesinde, sisteminize NuGet paketleri listeler. ListedeNewtonsoft.Jsonyoksa Gözat sekmesini seçin ve arama kutusuna "Newtonsoft.Json" yazın. ÖğesiniNewtonsoft.Jsonseçin ve sağ bölmede Yükle'yi seçmeden önce projenizi seçin.Sisteminize zaten yüklüyse, Çözüm için Paketleri Yönet sekmesinin sağ bölmesinde projenizi
Newtonsoft.Jsonseçerek projenize ekleyin.
Aşağıda, bu proje için tam csproj dosyası velanmıştır:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="10.0.2" />
</ItemGroup>
</Project>
Uygulamanızı dağıtırken, uygulamanıza kullanılan tüm üçüncü taraf bağımlılıkları da uygulama dosyalarınıza içerir. Üçüncü taraf kitaplıklar, uygulamanın üzerinde çalıştır olduğu sistemde gerekli değildir.
Bir üçüncü taraf kitaplığı olan kendi içinde bir dağıtımı yalnızca bu kitaplık tarafından desteklenen platformlara dağıtabilirsiniz. Bu, yerel bağımlılıkların daha önce orada yüklenmediği sürece hedef platformda mevcut olmadığı, çerçeveye bağımlı dağıtımda yerel bağımlılıklara sahip üçüncü taraf bağımlılıklara sahip olma ile benzerdir.