我想要实现dependency injection
在Asp.Net Core
.因此,在将此代码添加到ConfigureServices
方法之后,两种方式都有效.
services.AddTransient
和service.AddScoped
方法有Asp.Net Core
什么区别?
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddScoped<IEmailSender, AuthMessageSender>();
}
Run Code Online (Sandbox Code Playgroud) 在Visual Studio中,您可以创建至少3种不同类型的类库:
虽然第一个是我们多年来一直使用的,但我遇到的一个主要问题是何时使用.NET Standard和.NET Core类库类型.最近,当我尝试多目标不同的框架版本并创建一个单元测试项目时,我一直被这种做法所困扰.
那么,类库(.NET标准版)和类库(.NET Core)之间有什么区别,为什么两者都存在,什么时候应该使用另一个呢?
对于面向.NET Core 1.0的控制台应用程序项目,我无法弄清楚如何在构建期间输出.exe.项目在调试中运行良好.
我已经尝试发布该项目,但这也不起作用.有道理,因为.exe将是特定于平台的,但必须有一种方法.我的搜索只引用了使用project.json的旧版.Net Core版本.
无论何时我建立或发布,这都是我得到的.
微软现在在其.NET系列中拥有.NET Core,.NET Framework和Xamarin(Mono).
这里似乎有很多重叠.这些类型的.NET有什么区别?我应该何时选择在我的项目中使用.NET Core,而不是.NET Framework或Xamarin?
最近在一个官方的.NET Framework博客中宣布.NET Core是开源的.具有讽刺意味的是,作者提到将在下一篇文章中解释什么 .NET Core
.另一个宣布帖子中提到了更多细节.
从提供的图表:
和文章本身,我会假设.NET Core(除了明显的东西,如开源)是完整的.NET的模块化重新实现.即框架组件在必要时加载,就像现在加载NuGet包一样.现在,ASP.NET 5是已经实现的模块之一.我对.NET Core的理解是否正确?也许我错过了什么?
我发现最近的文章我发现既短又非常好.它涵盖了.NET Standard,.NET Core和.NET Framework及其关系.强烈推荐它.
我知道对于旧版本的.NET,您可以通过以下方式确定是否安装了给定版本
https://support.microsoft.com/en-us/kb/318785
Run Code Online (Sandbox Code Playgroud)
是否有官方方法确定是否安装了.NET Core?
(我不是指SDK,我想检查没有SDK的服务器,以确定它是否安装了DotNetCore.1.0.0-WindowsHosting.exe)
我可以看到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NET Cross-Platform Runtime Environment\.NET Framework 4.6\Win\v1-rc1
Run Code Online (Sandbox Code Playgroud)
在我的Windows 7机器上版本号为1.0.11123.0,但我在Windows 10机器上看不到相同的东西.
.NET Core和Mono有什么区别?
我在官方网站上发现了一条声明:"为它编写的代码也可以在应用程序堆栈中移植,例如Mono."
我的目标是使用C#,LINQ,EF7和Visual Studio创建一个可以在Linux上运行/托管的网站.
有人告诉我,他希望它是"单声道",但我不知道这意味着什么.我知道我想使用上面列出的技术使用.NET Core 1.0.他还说他想使用"快速CGI".我也不知道这意味着什么.
你能帮我理解所有这些术语吗?如果我的期望是现实的吗?
我已经了解了.NET Standard和.NET Core之间的区别,但我真的不知道区别是什么,或者何时选择.NET标准库项目以及何时选择.NET Core库项目.
我已经读过.NET Standard是为了确保一组API始终可用,无论使用哪个平台(只要该平台与我选择的.NET标准版本兼容).如果我没有弄错的话,这意味着我可以创建一个.NET Standard类库,然后在任何与我选择的.NET Standard版本兼容的平台上使用它.
使用.NET Core,我已经读过它也是为了跨平台使用,所以如果我选择一个.NET Core库,我似乎也可以在许多平台上使用它,就像.NET Standard一样.
所以最后,我没有看到差异.我什么时候应该使用哪个?他们之间有什么区别?
我在appsettings/Config .json中设置了我的AppSettings数据,如下所示:
{
"AppSettings": {
"token": "1234"
}
}
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了如何从.json文件中读取AppSettings值,但我无法获得任何有用的信息.
我试过了:
var configuration = new Configuration();
var appSettings = configuration.Get("AppSettings"); // null
var token = configuration.Get("token"); // null
Run Code Online (Sandbox Code Playgroud)
我知道在ASP.NET 4.0中你可以这样做:
System.Configuration.ConfigurationManager.AppSettings["token"];
Run Code Online (Sandbox Code Playgroud)
但是我如何在ASP.NET Core中执行此操作?
由于dotnet核心移回到.csproj
格式,因此有一个新的自动生成MyProject.AssemblyInfo.cs
,其中包含.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Run Code Online (Sandbox Code Playgroud)
请注意,每次构建时都会自动重新生成.以前该文件位于/ obj /目录中,现在它似乎只在内存中,因为在磁盘上找不到该文件并且单击错误消息不会打开任何文件.
由于它们在那里定义,我无法在经典中定义它们AssemblyInfo.cs
.
我在哪里/如何定义项目的公司和版本?