คำถามติดแท็ก .net-core

.NET Core เป็นผู้สืบทอดโอเพนซอร์ซของ. NET Framework สามารถใช้ในแอพพลิเคชั่นและแนวตั้งได้หลากหลายตั้งแต่เซิร์ฟเวอร์และศูนย์ข้อมูลไปจนถึงแอพและอุปกรณ์ .NET Core รองรับโดย Microsoft บน Windows, Linux และ macOS

3
แอปพลิเคชันคอนโซล async รองรับใน. NET Core หรือไม่
ในบางช่วงเวลา CoreCLR สนับสนุนจุดเข้าหลักแบบ async ดูhttp://blog.stephencleary.com/2015/03/async-console-apps-on-net-coreclr.html อย่างไรก็ตามทั้งสองโปรแกรมต่อไปนี้ไม่ทำงานใน. NET Core RTM using System; using System.Threading.Tasks; namespace ConsoleApplication { public class Program { public static async Task Main(string[] args) { await Task.Delay(1000); Console.WriteLine("Hello World!"); } } } หรือ using System; using System.Threading.Tasks; namespace ConsoleApplication { public class Program { public async Task Main(string[] …
113 c#  .net  .net-core 

6
ฉันควรใช้ ILogger, ILogger <T>, ILoggerFactory หรือ ILoggerProvider สำหรับห้องสมุดหรือไม่
สิ่งนี้อาจเกี่ยวข้องกับPass ILogger หรือ ILoggerFactory ไปยังตัวสร้างใน AspNet Core หรือไม่ อย่างไรก็ตามนี่เป็นเรื่องเกี่ยวกับการออกแบบไลบรารีโดยเฉพาะไม่เกี่ยวกับวิธีที่แอปพลิเคชันจริงที่ใช้ไลบรารีเหล่านั้นใช้การบันทึก ฉันกำลังเขียนไลบรารี. net Standard 2.0 ที่จะติดตั้งผ่าน Nuget และเพื่อให้ผู้ที่ใช้ไลบรารีนั้นได้รับข้อมูลการดีบักฉันขึ้นอยู่กับMicrosoft.Extensions.Logging.Abstractionsเพื่อให้สามารถฉีด Logger ที่เป็นมาตรฐานได้ อย่างไรก็ตามฉันเห็นหลายอินเทอร์เฟซและโค้ดตัวอย่างบนเว็บบางครั้งใช้ILoggerFactoryและสร้างตัวบันทึกใน ctor ของคลาส นอกจากนี้ยังILoggerProviderมีลักษณะที่ดูเหมือน Factory เวอร์ชันอ่านอย่างเดียว แต่การใช้งานอาจใช้หรือไม่ใช้ทั้งสองอินเทอร์เฟซดังนั้นฉันจึงต้องเลือก (โรงงานดูเหมือนธรรมดากว่าผู้ให้บริการ) รหัสบางตัวที่ฉันเคยเห็นใช้ILoggerอินเทอร์เฟซที่ไม่ใช่แบบทั่วไปและอาจแชร์อินสแตนซ์ของคนตัดไม้เดียวกันด้วยซ้ำและบางโค้ดก็ใช้ILogger&lt;T&gt;ctor และคาดว่าคอนเทนเนอร์ DI จะรองรับประเภททั่วไปแบบเปิดหรือการลงทะเบียนอย่างชัดเจนของแต่ละILogger&lt;T&gt;รูปแบบไลบรารีของฉัน ใช้ ตอนนี้ฉันคิดว่านั่นILogger&lt;T&gt;เป็นแนวทางที่ถูกต้องและอาจเป็น ctor ที่ไม่ได้ใช้อาร์กิวเมนต์นั้นและส่ง Null Logger แทน ด้วยวิธีนี้หากไม่จำเป็นต้องมีการบันทึกก็จะไม่มีการใช้ อย่างไรก็ตามตู้คอนเทนเนอร์ DI บางตัวเลือก ctor ที่ใหญ่ที่สุดจึงจะล้มเหลวอยู่ดี ฉันอยากรู้ว่าฉันควรจะทำอะไรที่นี่เพื่อสร้างความปวดหัวให้กับผู้ใช้น้อยที่สุดในขณะที่ยังให้การสนับสนุนการบันทึกที่เหมาะสมหากต้องการ

16
การกำหนดเวอร์ชันอัตโนมัติใน Visual Studio 2017 (.NET Core)
ฉันใช้เวลาสองสามชั่วโมงในการหาวิธีเพิ่มเวอร์ชันที่เพิ่มขึ้นอัตโนมัติใน. NETCoreApp 1.1 (Visual Studio 2017) ฉันรู้ว่ากำลังสร้าง AssemblyInfo.cs แบบไดนามิกในโฟลเดอร์: obj/Debug/netcoreapp1.1/ ไม่ยอมรับวิธีการเดิมของ: [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.*")] ถ้าฉันตั้งค่าโปรเจ็กต์เป็นแพ็กเกจฉันสามารถตั้งค่าเวอร์ชันได้ แต่ดูเหมือนว่าจะใช้ในการสร้างไฟล์ AssemblyInfo.cs คำถามของฉันคือมีใครคิดบ้างว่าจะควบคุมเวอร์ชันในโครงการ. NET Core (หรือ. NETStandard สำหรับเรื่องนั้น) ได้อย่างไร

5
สร้างฐานข้อมูลอัตโนมัติใน Entity Framework Core
แอปพลิเคชันของฉันที่ถูกย้ายไปยัง. NET core จะใช้ EF Core ใหม่กับ SQLite ฉันต้องการสร้างฐานข้อมูลและโครงสร้างตารางโดยอัตโนมัติเมื่อมีการเรียกใช้แอปครั้งแรก ตามเอกสารหลักของ EF สิ่งนี้ทำได้โดยใช้คำสั่งด้วยตนเอง dotnet ef migrations add MyFirstMigration dotnet ef database update อย่างไรก็ตามฉันไม่ต้องการให้ผู้ใช้ป้อนคำสั่งเหล่านี้และต้องการให้แอปสร้างและตั้งค่าฐานข้อมูลสำหรับการใช้งานครั้งแรก สำหรับ EF 6 มีฟังก์ชันเช่น Database.SetInitializer(new CreateDatabaseIfNotExists&lt;MyContext&gt;()); แต่ใน EF Core สิ่งเหล่านี้ดูเหมือนจะไม่มีอยู่จริง ฉันไม่พบตัวอย่างหรือเอกสารใด ๆ เกี่ยวกับสิ่งที่เทียบเท่าสำหรับแกน EF และไม่มีการกล่าวถึงในรายการคุณสมบัติที่ขาดหายไปในเอกสารหลักของ EF ฉันมีการตั้งค่าคลาสโมเดลอยู่แล้วดังนั้นฉันจึงสามารถเขียนโค้ดเพื่อเริ่มต้นฐานข้อมูลตามโมเดลได้ แต่จะง่ายกว่าถ้าเฟรมเวิร์กทำสิ่งนี้โดยอัตโนมัติ ฉันไม่ต้องการสร้างโมเดลหรือย้ายข้อมูลโดยอัตโนมัติเพียงแค่สร้างโครงสร้างตารางในฐานข้อมูลใหม่ ฉันพลาดอะไรบางอย่างที่นี่หรือฟังก์ชันสร้างตารางอัตโนมัติหายไปในแกน EF หรือไม่

7
คัดลอกไฟล์ไปยังไดเร็กทอรีเอาต์พุตโดยใช้ csproj dotnetcore
ดังนั้นปัญหาของฉันค่อนข้างง่าย ฉันมีไฟล์บางไฟล์ที่ต้องการคัดลอกไปยังไดเร็กทอรีเอาต์พุตของบิลด์ไม่ว่าจะเป็นเวอร์ชันดีบักหรือรีลีสเผยแพร่ ข้อมูลทั้งหมดที่ฉันสามารถหาได้เกี่ยวกับแนวทางการกำหนดค่า json แบบเก่า ใครมีตัวอย่างใช้ csproj กับ dotnetcore บ้างครับ?
109 c#  .net-core 

3
.NET Core DI วิธีการส่งผ่านพารามิเตอร์ไปยังตัวสร้าง
มีตัวสร้างบริการต่อไปนี้ public class Service : IService { public Service(IOtherService service1, IAnotherOne service2, string arg) { } } ทางเลือกในการส่งผ่านพารามิเตอร์โดยใช้กลไก. NET Core IOC คืออะไร _serviceCollection.AddSingleton&lt;IOtherService , OtherService&gt;(); _serviceCollection.AddSingleton&lt;IAnotherOne , AnotherOne&gt;(); _serviceCollection.AddSingleton&lt;IService&gt;(x=&gt;new Service( _serviceCollection.BuildServiceProvider().GetService&lt;IOtherService&gt;(), _serviceCollection.BuildServiceProvider().GetService&lt;IAnotherOne &gt;(), "" )); มีวิธีอื่น ๆ ?

3
ความหมายของแอปพลิเคชันของไลบรารีมาตรฐานขึ้นอยู่กับ metapackage คืออะไร?
สมมติว่าฉันมีไลบรารีคลาสที่ฉันต้องการกำหนดเป้าหมาย netstandard1.3 แต่ก็ใช้BigIntegerด้วย นี่คือตัวอย่างเล็กน้อย - ซอร์สไฟล์เดียวคือAdder.cs: using System; using System.Numerics; namespace Calculator { public class Adder { public static BigInteger Add(int x, int y) =&gt; new BigInteger(x) + new BigInteger(y); } } ย้อนกลับไปในโลกของproject.jsonฉันจะกำหนดเป้าหมายnetstandard1.3ในframeworksส่วนนี้และมีการพึ่งพาอย่างชัดเจนSystem.Runtime.Numericsเช่นเวอร์ชัน 4.0.1 แพ็คเกจ nuget ที่ฉันสร้างจะแสดงรายการการอ้างอิงนั้น ในโลกใหม่ที่กล้าหาญของ csproj ตาม dotnet เครื่องมือ (ฉันใช้ v1.0.1 ของเครื่องมือบรรทัดคำสั่ง) มีความนัยอ้างอิงแพคเกจ metapackageไปเมื่อกำหนดเป้าหมายNETStandard.Library 1.6.1 netstandard1.3ซึ่งหมายความว่าไฟล์โครงการของฉันมีขนาดเล็กมากเพราะไม่ต้องการการพึ่งพาอย่างชัดเจน: &lt;Project …

16
ไม่พบ testhost.dll โปรดเผยแพร่โครงการทดสอบของคุณแล้วลองอีกครั้ง
ฉันมีไลบรารีคลาส dotnet core อย่างง่ายพร้อมวิธีทดสอบ XUnit เดียว: TestLib.csproj: &lt;Project Sdk="Microsoft.NET.Sdk"&gt; &lt;PropertyGroup&gt; &lt;TargetFramework&gt;netstandard2.0&lt;/TargetFramework&gt; &lt;/PropertyGroup&gt; &lt;ItemGroup&gt; &lt;PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" /&gt; &lt;PackageReference Include="xunit" Version="2.4.1" /&gt; &lt;PackageReference Include="xunit.runner.console" Version="2.4.1"&gt; &lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers&lt;/IncludeAssets&gt; &lt;PrivateAssets&gt;all&lt;/PrivateAssets&gt; &lt;/PackageReference&gt; &lt;PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"&gt; &lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers&lt;/IncludeAssets&gt; &lt;PrivateAssets&gt;all&lt;/PrivateAssets&gt; &lt;/PackageReference&gt; &lt;PackageReference Include="xunit.runners" Version="2.0.0" /&gt; &lt;/ItemGroup&gt; &lt;/Project&gt; BasicTest.cs: using Xunit; …

4
คุณกำหนดเป้าหมายไลบรารีคลาส. NET Core หลายเป้าหมายด้วย csproj ได้อย่างไร
เมื่อ. NET Core ยังคงใช้project.jsonรูปแบบคุณสามารถสร้างไลบรารีคลาสที่กำหนดเป้าหมายหลายเฟรมเวิร์ก (เช่น net451, netcoreapp1.0) ตอนนี้รูปแบบโครงการอย่างเป็นทางการกำลังcsprojใช้ MSBuild คุณจะระบุกรอบงานหลายรายการเพื่อกำหนดเป้าหมายได้อย่างไร? ฉันพยายามที่จะมองหานี้จากการตั้งค่าโครงการใน VS2017 แต่ฉันสามารถที่จะกำหนดเป้าหมายเฉพาะกรอบเดียวจากกรอบ .NET หลัก (มันไม่ได้มีรายการอื่น ๆ รุ่น .NET Framework เต็มรูปแบบซึ่งผมไม่ได้ติดตั้ง) :

9
อะไรแทนที่ WCF ใน. Net Core
ฉันคุ้นเคยกับการสร้างแอปพลิเคชันคอนโซล. Net Framework และเปิดเผยAdd(int x, int y)ฟังก์ชันผ่านบริการ WCF ตั้งแต่เริ่มต้นด้วย Class Library (.Net Framework) จากนั้นฉันใช้แอปพลิเคชันคอนโซลเพื่อพร็อกซีเรียกใช้ฟังก์ชันนี้ภายในเซิร์ฟเวอร์ อย่างไรก็ตามหากฉันใช้ Console App (.Net Core) และ Class Library (.Net Core) System.ServiceModel จะไม่พร้อมใช้งาน ฉันได้ทำ Googling ไปบ้างแล้ว แต่ยังไม่ทราบว่า WCF "แทนที่" อะไรในอินสแตนซ์นี้ ฉันจะแสดงAdd(int x, int y)ฟังก์ชันภายในไลบรารีคลาสไปยังแอปพลิเคชันคอนโซลทั้งหมดภายใน. Net Core ได้อย่างไร ฉันเห็น System.ServiceModel.Web และเนื่องจากนี่เป็นการพยายามข้ามแพลตฟอร์มฉันจึงต้องสร้างบริการ RESTful หรือไม่
96 c#  .net  wcf  service  .net-core 

30
ไฟล์โครงการไม่สมบูรณ์ การนำเข้าที่คาดไว้ขาดหายไป
หลังจากฟอร์แมตคอมพิวเตอร์ของฉันฉันติดตั้ง Vs 2017 V 15.6.3 ใหม่และติดตั้ง ASP.Net Core SDK จาก Microsoft 2.1.4 แต่เมื่อฉันสร้างแอปพลิเคชันหลัก asp ใหม่ VS ล้มเหลวด้วยข้อผิดพลาด "ไฟล์โครงการไม่สมบูรณ์การนำเข้าที่คาดไว้ขาดหายไป" ได้โปรดใครก็ได้ช่วย

11
ความแตกต่างระหว่าง SDK และ Runtime ใน. NET Core คืออะไร?
ฉันได้อ่านบทความมากมายรวมถึงบทความนี้แต่ฉันก็ยังไม่สามารถเข้าใจได้ว่าอะไรคือความแตกต่างและพวกเขายังไม่ได้อธิบายในแง่ง่ายๆหรือเลย ใครช่วยอธิบายความแตกต่างระหว่าง. NET SDK และ. NET Runtime ได้บ้าง? อัปเดต: การใช้การเปรียบเทียบจะได้รับการชื่นชมมาก การเปรียบเทียบควบคู่ไปกับภาษาอังกฤษที่เรียบง่ายนั้นมีการศึกษาสูง
94 sdk  .net-core  runtime 

5
การติดตั้ง Visual Studio 2017 แบ่ง Visual Studio 2015 ASP.NET Core Projects
หลังจากติดตั้ง Visual Studio 2017 Professional แล้วฉันไม่สามารถสร้าง ASP.NET Core ใน Visual Studio 2015 Professional ได้อีกต่อไป ฉันไม่เคยเปิดโครงการนี้ใน VS2017 ฉันเข้าใจ เกิดข้อผิดพลาดต่อไปนี้ขณะพยายามรันกระบวนการเซิร์ฟเวอร์โมเดลโครงการ (1.0.0-preview3-004056) ไม่สามารถเริ่มกระบวนการได้ ไม่พบปฏิบัติการที่ตรงกับคำสั่ง dotnet-projectmodel-server จากนั้นฉันได้สร้างโครงการ ASP.NET Core ใหม่ใน Visual Studio 2015 และฉันได้รับข้อความเดียวกันเมื่อโหลดโครงการของฉัน นอกจากนี้เมื่อฉันต้องการสร้างโครงการฉันจะได้รับ MSB1009: ไม่มีไฟล์โครงการ ปัญหาเดียวกันนี้ไม่เกิดขึ้นกับโครงการ ASP.NET 5 ดังนั้นจึง จำกัด เฉพาะ ASP.NET Core เท่านั้น Visual Studio 2017 อัปเดต 7 มีนาคม มีการเพิ่ม ifa …

6
ไม่มี AppDomains ใน. NET Core! ทำไม?
มีเหตุผลที่ชัดเจนว่าทำไม Microsoft จึงเลือกที่จะไม่สนับสนุน AppDomains ใน. NET Core? AppDomains มีประโยชน์อย่างยิ่งเมื่อสร้างแอปเซิร์ฟเวอร์ที่ใช้งานมานานซึ่งเราอาจต้องการอัปเดตแอสเซมบลีที่เซิร์ฟเวอร์โหลดเป็นวิธีที่ดีโดยไม่ต้องปิดเซิร์ฟเวอร์ หากไม่มี AppDomains เราจะเปลี่ยนแอสเซมบลีของเราในกระบวนการเซิร์ฟเวอร์ที่ใช้งานยาวนานได้อย่างไร AppDomains ยังให้เราแยกส่วนต่างๆของรหัสเซิร์ฟเวอร์ เช่นเดียวกับเซิร์ฟเวอร์ websocket ที่กำหนดเองสามารถมีรหัสซ็อกเก็ตใน appdomain หลักในขณะที่บริการของเราทำงานใน appdomain รอง หากไม่มี AppDomains สถานการณ์ข้างต้นจะเป็นไปไม่ได้ ฉันเห็นข้อโต้แย้งที่อาจพูดถึงการใช้แนวคิด VMs ของ Cloud สำหรับจัดการการเปลี่ยนแปลงแอสเซมบลีและไม่ต้องเสียค่าใช้จ่ายของ AppDomains แต่นี่คือสิ่งที่ Microsoft คิดหรือพูด? หรือมีเหตุผลและทางเลือกเฉพาะสำหรับสถานการณ์ข้างต้น?

1
.NET Core - เมื่อใดควรใช้“ dotnet new sln”
ฉันสับสนเล็กน้อย - บทแนะนำ. NET Core ส่วนใหญ่ที่ฉันอ่านไม่ได้กล่าวถึง "dotnet new sln" - พวกเขามักจะสร้างโครงการแยกกันโดยไม่มีไฟล์โซลูชันใด ๆ เพื่อเชื่อมโยงเข้าด้วยกัน "dotnet new sln" เป็นคำสั่งใหม่หรือไม่ ฉันควรใช้สิ่งนี้เมื่อใด ฉันจะได้ประโยชน์อะไรจากการสร้างไฟล์. sln แทนที่จะมีแค่ไฟล์โครงการ ส่วนใหญ่เปิดใน Visual Studio หรือไม่? ฉันใช้ Visual Studio Code สำหรับ Mac ดังนั้นจึงอาจใช้ไม่ได้ ฉันใช้ googled "dotnet new sln" แล้วผลลัพธ์ก็น้อยมาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.