Öğretici: Visual Studio Code kullanarak macOS 'ta .NET Core çözümü oluşturmaTutorial: Create a .NET Core solution in macOS using Visual Studio Code

Bu belge, macOS için .NET Core çözümü oluşturmaya yönelik adımları ve iş akışını sağlar.This document provides the steps and workflow to create a .NET Core solution for macOS. Projeler, birim testleri oluşturma, hata ayıklama araçlarını kullanma ve NuGetaracılığıyla üçüncü taraf kitaplıklarını birleştirme hakkında bilgi edinin.Learn how to create projects, unit tests, use the debugging tools, and incorporate third-party libraries via NuGet.

Not

Bu makale macOS üzerinde Visual Studio Code kullanır.This article uses Visual Studio Code on macOS.

ÖnkoşullarPrerequisites

.NET Core SDK'i yükler.Install the .NET Core SDK. .NET Core SDK .NET Core Framework ve çalışma zamanının en son sürümünü içerir.The .NET Core SDK includes the latest release of the .NET Core framework and runtime.

Visual Studio Code'i yükler.Install Visual Studio Code. Bu makalenin kursu sırasında, .NET Core geliştirme deneyimini geliştiren Visual Studio Code uzantıları da yüklersiniz.During the course of this article, you also install Visual Studio Code extensions that improve the .NET Core development experience.

Visual Studio Code açıp C# F1 tuşuna basarak Visual Studio Code uzantısını yükleyip Visual Studio Code paleti açın.Install the Visual Studio Code C# extension by opening Visual Studio Code and pressing F1 to open the Visual Studio Code palette. Uzantı listesini görmek için EXT Install yazın.Type ext install to see the list of extensions. C# Uzantıyı seçin.Select the C# extension. Uzantıyı etkinleştirmek için Visual Studio Code yeniden başlatın.Restart Visual Studio Code to activate the extension. Daha fazla bilgi için C# Visual Studio Code uzantısı belgelerinebakın.For more information, see the Visual Studio Code C# Extension documentation.

Kullanmaya başlayınGet started

Bu öğreticide, üç proje oluşturursunuz: bir kitaplık projesi, bu kitaplık projesi için testler ve kitaplığı kullanan bir konsol uygulaması.In this tutorial, you create three projects: a library project, tests for that library project, and a console application that makes use of the library. Bu konunun kaynağını GitHub 'daki DotNet/Samples deposunda görüntüleyebilir veya indirebilirsiniz .You can view or download the source for this topic at the dotnet/samples repository on GitHub. İndirme yönergeleri için bkz. örnekler ve öğreticiler.For download instructions, see Samples and Tutorials.

Visual Studio Code başlatın.Start Visual Studio Code. Visual Studio Code ' de gömülü bir terminal açmak için CTRL + ` tuşuna basın (backquote veya backtick karakteri) veya menüden > tümleşik Terminal görüntüle ' yi seçin.Press Ctrl+` (the backquote or backtick character) or select View > Integrated Terminal from the menu to open an embedded terminal in Visual Studio Code. Visual Studio Code dışında çalışmayı tercih ediyorsanız, bir dış kabuğu Explorer komut istemi komutunda aç (Mac veya Linux 'taterminalde aç ) ile açabilirsiniz.You can still open an external shell with the Explorer Open in Command Prompt command (Open in Terminal on Mac or Linux) if you prefer to work outside of Visual Studio Code.

Bir veya daha fazla .NET Core projesi için kapsayıcı görevi gören bir çözüm dosyası oluşturarak başlayın.Begin by creating a solution file, which serves as a container for one or more .NET Core projects. Terminalde, altınadlı yeni dotnet new bir klasör içinde altın. sln yeni bir çözüm oluşturmak için komutunu çalıştırın:In the terminal, run the dotnet new command to create a new solution golden.sln inside a new folder named golden:

dotnet new sln -o golden

New altın klasörüne gidin ve Kitaplık klasöründe,Library. csproj ve Class1.csolmak üzere iki dosya üreten bir kitaplık projesi oluşturmak için aşağıdaki komutu yürütün:Navigate to the new golden folder and execute the following command to create a library project, which produces two files,library.csproj and Class1.cs, in the library folder:

dotnet new classlib -o library

Yeni oluşturulan Library. csproj projesini çözüme eklemek için komutunuyürütün:dotnet slnExecute the dotnet sln command to add the newly created library.csproj project to the solution:

dotnet sln add library/library.csproj

Library. csproj dosyası aşağıdaki bilgileri içerir:The library.csproj file contains the following information:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

</Project>

Kitaplık yöntemlerimiz JSON biçimindeki nesneleri serileştirmek ve serisini kaldıramıyor.Our library methods serialize and deserialize objects in JSON format. JSON serileştirme ve serisini kaldırma desteklemek için Newtonsoft.Json NuGet paketine bir başvuru ekleyin.To support JSON serialization and deserialization, add a reference to the Newtonsoft.Json NuGet package. Komut dotnet add , projeye yeni öğeler ekler.The dotnet add command adds new items to a project. Bir NuGet paketine başvuru eklemek için dotnet add package komutunu kullanın ve paketin adını belirtin:To add a reference to a NuGet package, use the dotnet add package command and specify the name of the package:

dotnet add library package Newtonsoft.Json

Bu, Newtonsoft.Json ve bağımlılıklarını kitaplık projesine ekler.This adds Newtonsoft.Json and its dependencies to the library project. Alternatif olarak, Library. csproj dosyasını el ile düzenleyin ve aşağıdaki düğümü ekleyin:Alternatively, manually edit the library.csproj file and add the following node:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
</ItemGroup>

Bağımlılıkları geri yükleyen (bkz. Note) ve bir Project. varlıklar. JSON dosyası dahil olmak üzere, içinde üç dosya içeren kitaplık içinde bir obj klasörü oluşturur: dotnet restoreExecute dotnet restore, (see note) which restores dependencies and creates an obj folder inside library with three files in it, including a project.assets.json file:

dotnet restore

Kitaplık klasöründe, Class1.cs dosyasını Thing.csolarak yeniden adlandırın.In the library folder, rename the file Class1.cs to Thing.cs. Kodu aşağıdaki kodla değiştirin:Replace the code with the following:

using static Newtonsoft.Json.JsonConvert;

namespace Library
{
    public class Thing
    {
        public int Get(int left, int right) =>
            DeserializeObject<int>($"{left + right}");
    }
}

Sınıfı, iki sayının toplamını döndüren, Getancak toplamı bir dizeye dönüştürerek ve sonra bir tamsayıya seri durumdan çıkarmak için bir genel yöntem içerir. ThingThe Thing class contains one public method, Get, which returns the sum of two numbers but does so by converting the sum into a string and then deserializing it into an integer. Bu, C# using static yönergeler, ifade-Bodied Üyelerve dize ilişkilendirmegibi birçok modern özelliği kullanır.This makes use of a number of modern C# features, such as using static directives, expression-bodied members, and string interpolation.

dotnet build Komutuyla kitaplığı oluşturun.Build the library with the dotnet build command. Bu, altın/Library/bin/Debug/Netstandard 1.4altında bir Library. dll dosyası üretir:This produces a library.dll file under golden/library/bin/Debug/netstandard1.4:

dotnet build

Test projesi oluşturmaCreate the test project

Kitaplık için bir test projesi oluşturun.Build a test project for the library. Altın klasörden yeni bir test projesi oluşturun:From the golden folder, create a new test project:

dotnet new xunit -o test-library

Çözüme test projesi ekleyin:Add the test project to the solution:

dotnet sln add test-library/test-library.csproj

Önceki bölümde oluşturduğunuz kitaplığa bir proje başvurusu ekleyerek derleyicinin kitaplık projesini bulup kullanmasını sağlayabilirsiniz.Add a project reference the library you created in the previous section so that the compiler can find and use the library project. dotnet add reference Şu komutu kullanın:Use the dotnet add reference command:

dotnet add test-library/test-library.csproj reference library/library.csproj

Alternatif olarak, Test-Library. csproj dosyasını el ile düzenleyin ve aşağıdaki düğümü ekleyin:Alternatively, manually edit the test-library.csproj file and add the following node:

<ItemGroup>
  <ProjectReference Include="..\library\library.csproj" />
</ItemGroup>

Bağımlılıklar düzgün şekilde yapılandırıldığına göre, kitaplığınız için testler oluşturun.Now that the dependencies have been properly configured, create the tests for your library. UnitTest1.cs açın ve içeriğini şu kodla değiştirin:Open UnitTest1.cs and replace its contents with the following code:

using Library;
using Xunit;

namespace TestApp
{
    public class LibraryTests
    {
        [Fact]
        public void TestThing() {
            Assert.NotEqual(42, new Thing().Get(19, 23));
        }
    }
}

Birim testini (Assert.NotEqual) ilk oluşturduğunuzda 42 değerini 19 + 23 (veya 42) olarak, başarısız olacağını unutmayın.Note that you assert the value 42 is not equal to 19+23 (or 42) when you first create the unit test (Assert.NotEqual), which will fail. Birim testlerini oluştururken önemli bir adım testi, öncelikle mantığını onaylamak için bir kez başarısız olacak şekilde oluşturmaktır.An important step in building unit tests is to create the test to fail once first to confirm its logic.

Altın klasöründen aşağıdaki komutları yürütün:From the golden folder, execute the following commands:

dotnet restore 
dotnet test test-library/test-library.csproj

Bu komutlar, bağımlılıkları geri yüklemek, onları derlemek ve testleri çalıştırmak için xUnit Test Çalıştırıcısı 'nı etkinleştirmek için tüm projeleri yinelemeli olarak bulur.These commands will recursively find all projects to restore dependencies, build them, and activate the xUnit test runner to run the tests. Beklenen şekilde tek test başarısız olur.The single test fails, as you expect.

UnitTest1.cs dosyasını düzenleyin ve onaylama Assert.NotEqual öğesini olarak Assert.Equaldeğiştirin.Edit the UnitTest1.cs file and change the assertion from Assert.NotEqual to Assert.Equal. Bu saati geçen testi yeniden çalıştırmak için altın klasöründen aşağıdaki komutu yürütün:Execute the following command from the golden folder to re-run the test, which passes this time:

dotnet test test-library/test-library.csproj

Konsol uygulaması oluşturmaCreate the console app

Aşağıdaki adımlar üzerinden oluşturduğunuz konsol uygulaması, daha önce oluşturduğunuz kitaplık projesine bir bağımlılık alır ve çalıştırıldığında kitaplık yöntemini çağırır.The console app you create over the following steps takes a dependency on the library project you created earlier and calls its library method when it runs. Bu geliştirme modelini kullanarak birden çok proje için yeniden kullanılabilir kitaplıklar oluşturmayı görürsünüz.Using this pattern of development, you see how to create reusable libraries for multiple projects.

Altın klasöründen yeni bir konsol uygulaması oluşturun:Create a new console application from the golden folder:

dotnet new console -o app

Konsol uygulaması projesini çözüme ekleyin:Add the console app project to the solution:

dotnet sln add app/app.csproj

Şu dotnet add reference komutu çalıştırarak kitaplıkta bağımlılığı oluşturun:Create the dependency on the library by running the dotnet add reference command:

dotnet add app/app.csproj reference library/library.csproj

Çözümdeki dotnet restore üç projenin bağımlılıklarını geri yüklemek için çalıştırın (bkz. Note).Run dotnet restore (see note) to restore the dependencies of the three projects in the solution. Program.cs açın ve Main yönteminin içeriğini aşağıdaki satırla değiştirin:Open Program.cs and replace the contents of the Main method with the following line:

WriteLine($"The answer is {new Thing().Get(19, 23)}");

Program.cs dosyasının using en üstüne iki yönergeler ekleyin:Add two using directives to the top of the Program.cs file:

using static System.Console;
using Library;

Yürütülebilir dosyayı çalıştırmak dotnet run için aşağıdaki komutu yürütün; -p burada dotnet run , ana uygulamanın projesini belirtir.Execute the following dotnet run command to run the executable, where the -p option to dotnet run specifies the project for the main application. Uygulama "Yanıt 42" dizesini üretir.The app produces the string "The answer is 42".

dotnet run -p app/app.csproj

Uygulamada hata ayıklamaDebug the application

WriteLine Yöntemindeki ifadedeMain bir kesme noktası ayarlayın.Set a breakpoint at the WriteLine statement in the Main method. İmleç WriteLine çizginin üzerindeyken F9 tuşuna basarak veya kesme noktasını ayarlamak istediğiniz satırdaki sol kenar boşluğunda fareyle tıklanarak bunu yapın.Do this by either pressing the F9 key when the cursor is over the WriteLine line or by clicking the mouse in the left margin on the line where you want to set the breakpoint. Kod satırının yanındaki kenar boşluğunda kırmızı bir daire görünür.A red circle will appear in the margin next to the line of code. Kesme noktasına ulaşıldığında, kesme noktası çizgisi yürütülmeden önce kod yürütme durur.When the breakpoint is reached, code execution will stop before the breakpoint line is executed.

Visual Studio Code araç çubuğunda hata ayıklama simgesini seçerek hata ayıklayıcı sekmesini açın, menü çubuğundan > hata ayıklamayı görüntüle ' yi seçin ya da CTRL++ SHIFT+' klavye kısayolunukullanın:Open the debugger tab by selecting the Debug icon in the Visual Studio Code toolbar, selecting View > Debug from the menu bar, or using the keyboard shortcut CTRL+SHIFT+D:

Visual Studio Code hata ayıklayıcı

Uygulamayı hata ayıklayıcı altında başlatmak için Yürüt düğmesine basın.Press the Play button to start the application under the debugger. Uygulama yürütme işlemini başlatır ve kesme noktasında çalışır.The app begins execution and runs to the breakpoint, where it stops. Get Yöntemine adımlayın ve doğru bağımsız değişkenleri geçirdiğinizden emin olun.Step into the Get method and make sure that you have passed in the correct arguments. Yanıtın 42 olduğunu doğrulayın.Confirm that the answer is 42.

Not

.NET Core 2.0 SDK'sı ile başlayarak, çalıştırma gerekmez dotnet restore bir geri yükleme, örneğin, gerçekleşmesi için gerekli tüm komutlar tarafından örtük olarak çalıştırıldığından dotnet new, dotnet build ve dotnet run.Starting with .NET Core 2.0 SDK, you don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet new, dotnet build and dotnet run. Bunu hala geçerli bir komut burada açık bir geri yükleme yaparsanız anlamlı, bazı senaryolarda olduğu gibi sürekli tümleştirme derlemeleri Azure DevOps Hizmetleri'nde veya açıkça zaman denetlemek için gereken derleme sistemlerinde geri yükleme gerçekleşir.It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control the time at which the restore occurs.