在早期版本中,我们有 Startup.cs 类,并在Startup文件中获取配置对象,如下所示。
public class Startup
{
private readonly IHostEnvironment environment;
private readonly IConfiguration config;
public Startup(IConfiguration configuration, IHostEnvironment environment)
{
this.config = configuration;
this.environment = environment;
}
public void ConfigureServices(IServiceCollection services)
{
// Add Services
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Add Middlewares
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在 .NET 6 及更高版本(使用 Visual Studio 2022)中,我们看不到Startup.cs类。看来它的日子屈指可数了。那么我们如何获取配置(IConfiguration)和托管环境(IHostEnvironment)等对象
我们如何获取这些对象,也就是说从 appsettings 读取配置?目前,Program.cs 文件如下所示。
using Festify.Database;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<FestifyContext>();
//////////////////////////////////////////////// …
Run Code Online (Sandbox Code Playgroud) 当我发布 ABP 项目时,出现以下错误:
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets(112,5): error NETSDK1152: Found multiple publish output files with the same relative path:
D:\Github\volo\abp\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\compilerconfig.json,
D:\Github\volo\abp\bookstore\src\Acme.BookStore.Theme\compilerconfig.json,
D:\Github\volo\abp\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\package.json,
D:\Github\volo\abp\bookstore\src\Acme.BookStore.Web\package.json.
D:\Github\volo\abp\bookstore\src\Acme.BookStore.Web\Acme.BookStore.Web.csproj
Run Code Online (Sandbox Code Playgroud) 我正在尝试访问我的 Asp.net core v6 应用程序 Program.cs 文件中的 appsettings.json,但在此版本的 .Net 中,Startup 类和 Program 类合并在一起,并且 using 和 another 语句被简化并从 Program 中删除。CS。在这种情况下,如何访问 IConfiguration 或如何使用依赖注入?
这是 Asp.net 6 为我创建的默认 Program.cs
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost:6379";
});
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new() { Title = "BasketAPI", Version = "v1" });
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "BasketAPI v1"));
}
app.UseHttpsRedirection(); …
Run Code Online (Sandbox Code Playgroud) 我在 .NET 5 中创建了 REST API,一切都运行良好,但最近我转移到 .NET 6 并意识到不存在startup.cs 类。由于没有startup.cs,如何在.NET 6 中添加数据库上下文?
我有一个最初是为 .NET 6 创建的项目,但后来我需要将其降级到 .NET 5。我在项目属性中更改了目标框架并尝试编译。结果我收到了一堆错误:
GlobalUsings.g.cs(2,1,2,29): error CS8773: Feature 'global using directive' is not available in C# 9.0. Please use language version 10.0 or greater.
Run Code Online (Sandbox Code Playgroud)
文件 GlobalUsings.g.cs 是自动创建的,并且每次编译后都会重新出现。
我正在将我的项目转换为 .NET 6,并且我想在任何地方使用文件作用域命名空间。但转换工具仅存在于编辑器中。
有没有人发现是否有一种方法可以同时在解决方案中的所有文件中运行此编辑器功能?(貌似Rider有这个功能)
现在 .NET 6.0 已经发布,默认 CLI 项目模板的彻底更新似乎是缺少熟悉的样板文件,被简化为以下内容:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
Run Code Online (Sandbox Code Playgroud)
尚不清楚(到目前为止我一直在尝试查找文档,但无济于事)是如何访问传递给可执行文件的入口点类的命令行参数?
就在几天前,更新到 Visual Studio Community 2022 v17.2(从 v17.1.6)后出现此错误:
错误 NETSDK1005 资产文件“C:.........XXXXXX.Web\obj\project.assets.json”没有“net6.0”的目标。确保恢复已运行并且您已将“net6.0”包含在项目的 TargetFrameworks 中。XXXXXX.Web C:\Program Files\dotnet\sdk\6.0.300\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets 267
.csproj 文件已准备就绪:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
<IsPackable>false</IsPackable>
<SpaRoot>ClientApp\</SpaRoot>
<DefaultItemExcludes>$(DefaultItemExcludes);(SpaRoot)\**\node_modules\**;</DefaultItemExcludes>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
在构建或重建之前始终删除“bin”和“obj”文件夹......
无法摆脱编译,并且总是收到 NETSDK1005 错误...
PS - 已检查问题70711153
我有共同的问题。
无法将 Kind=UTC 的 DateTime 写入 PostgreSQL 类型“不带时区的时间戳”
我想启用旧版时间戳行为,如下所示: https: //github.com/npgsql/doc/blob/main/conceptual/Npgsql/types/datetime.md/
public MyDbContext(DbContextOptions<MyDbContext> contextOptions) : base(contextOptions)
{
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
}
Run Code Online (Sandbox Code Playgroud)
但不起作用。我仍然遇到同样的错误。
我做错了什么。为什么遗留行为不起作用?
我一直在努力将 ASP.NET Core Web API 项目的目标框架更改为 .NET 6,该项目是使用目标框架 .NET 5 启动的。我已经尝试了一些选项,但找不到列出的 .NET 6 Framework在目标下拉列表中。