小编Gur*_*ron的帖子

VS 2022 - 转换为所有文件中的文件范围命名空间

我正在将我的项目转换为 .NET 6,并且我想在任何地方使用文件作用域命名空间。但转换工具仅存在于编辑器中。

文件范围的命名空间转换

有没有人发现是否有一种方法可以同时在解决方案中的所有文件中运行此编辑器功能?(貌似Rider有这个功能)

.net c# .net-6.0 visual-studio-2022 c#-10.0

96
推荐指数
4
解决办法
3万
查看次数

如何读取 .NET 6 控制台应用程序中的 appsettings.json?

我尝试创建 .NET 6 控制台应用程序,但在读取 appsettings.json 文件时遇到问题。在网络应用程序中我可以使用这个......

var builder = WebApplication.CreateBuilder(args);
Run Code Online (Sandbox Code Playgroud)

但我会在控制台应用程序中使用什么?尝试将其添加到 program.cs 时出现此错误。"The name 'WebApplication' does not exist in the current context"

c# json console-application .net-6.0

69
推荐指数
4
解决办法
9万
查看次数

迁移已弃用的 Microsoft.AspNetCore.Http.Abstractions nuget 包

我有一个 .NET 7 Blazor 帮助程序库,它已从HttpContextnuget引用Microsoft.AspNetCore.Http.Abstractions (2.2.0)。但是,此 nuget 现在已被 Microsoft 标记为已弃用,因此 Visual Studio Nuget 管理器会向我显示有关此包引用的警告。

但是我的 .Net7 Blazor 应用程序正在使用Microsoft.AspNetCore.Components.Web (7.0.5),并且根 razor 页面_Host.cshtml公开了该HttpContext属性,我需要将其传递给上述项目中的辅助方法。

我在这里缺少什么?HttpContext如果我从浏览定义_Host.cshtml,Visual Studio 声称它是在 中声明的Microsoft.AspNetCore.Http.Abstractions (7.0.0.0),但无处可寻?

我对其他相关软件包也有类似的问题。在没有警告的情况下引用这些包的正确方法是什么?或者我还可以使用哪些其他软件包?

c# nuget asp.net-core blazor .net-7.0

44
推荐指数
0
解决办法
4万
查看次数

实体框架 | 序列包含多个匹配元素

我使用数据库优先方法。该模型是正确的(或者至少看起来是正确的)但我总是收到此错误。拜托,我已经尝试了很多事情..我的程序的完整代码(甚至是我创建数据库的sql脚本)在这里: https: //github.com/AntonioParroni/test-task-for-backend -stack/blob/main/Server/Models/ApplicationContext.cs

因为我有一台Mac。我使用 dotnet ef cli 命令(dbcontext 脚手架)创建了我的模型,我可以使用我的上下文。但我无法触及任何 DbSet..

public static void Main(string[] args)
    {
        using (ApplicationContext context = new ApplicationContext())
        {
            Console.WriteLine(context.Database.CanConnect());
            var months = context.Months.ToList();
            foreach (var month in months)
            {
                Console.WriteLine(month.MonthName);
            }
        }
        //CreateHostBuilder(args).Build().Run();
    }
Run Code Online (Sandbox Code Playgroud)

这不是我第一次使用 EF。之前,在许多简单的项目或任务中,一切都运行良好。在这里......我做什么并不重要(我什至尝试重命名所有列名称,删除除一个表之外的所有表,修改上下文代码,在一个新的、完全空的上使用此项目中的相同步骤项目..)总是..

Unhandled exception. System.TypeInitializationException: The type initializer for 'Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor' threw an exception.
 ---> System.TypeInitializationException: The type initializer for 'Microsoft.EntityFrameworkCore.Query.QueryableMethods' threw an exception.
     ---> System.InvalidOperationException: Sequence contains more than one matching element
       at System.Linq.ThrowHelper.ThrowMoreThanOneMatchException() in System.Linq.dll:token 0x600041c+0xa
ect....
Run Code Online (Sandbox Code Playgroud)

这是我的包参考文件

"restore":{"projectUniqueName":"/Users/mac/Documents/GitHub/test-task-for-backend-stack/Server/Server.csproj", …
Run Code Online (Sandbox Code Playgroud)

c# sql-server orm entity-framework entity-framework-core

41
推荐指数
1
解决办法
4万
查看次数

如何在.NET 6库中引用ASP.NET Core 6类型?

我正在为我的组织开发内部图书馆。我需要引用通常“属于”网络应用程序的某些类型,例如。提供一些扩展:

  • WebApplicationOptions
  • HttpContext

如果我使用<Project Sdk="Microsoft.NET.Sdk">,我没有对这些类型的引用,也找不到包含它们的任何 nuget 包。如果我使用<Project Sdk="Microsoft.NET.Sdk.Web">,我无法构建我的类库,因为它被视为应用程序并且必须指定入口点。

所以,我的一般问题是:为 ASP.NET Core 6 编写库的正确方法是什么?

回到 core 2.x 时代,所有东西都有软件包,比如Microsoft.AspNetCore.Http.Abstractions. 它们都停留在版本上2.2.0,我认为它们现在无法使用?

c# package libraries .net-core asp.net-core

36
推荐指数
1
解决办法
2万
查看次数

FileVersionInfo.ProductVersion 突然包含 git commit hash

我有一个 .NET 6 WPF 项目,无法弄清楚发生了什么变化,因为ProductVersion我的程序集突然包含 git commit 哈希。

我的项目文件总是这样,我还更新了版本信息:

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
    ...
    <Version>0.9.2</Version>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

然后,在我的代码中,我使用以下命令将版本获取为字符串:

 string? productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly()!.Location).ProductVersion;
Run Code Online (Sandbox Code Playgroud)

这总是返回预期的版本,例如0.9.2,与项目文件中设置的版本完全相同。但有些事情发生了变化,现在看起来像这样:0.9.2+abf5b643b64475a8b1d7d89284e3478b1ba4a431。这也是显示在资源管理器中 .dll 和 .exe 文件的“详细信息”选项卡上的内容。

我会定期更新 Visual Studio,以便接收我在其他项目中使用的 .NET 8 的更新,因此它可能与某些更新有关。但我不知道究竟发生了什么变化,也不知道如何定义ProductVersion不包含 git 提交哈希(是的,它是提交哈希)。也有一段时间没有参与 WPF 项目了,所以不知道这种行为何时改变。

讽刺的是,我过去需要 git 提交,所以必须付出一些额外的努力才能使其可用,尽管缩写为 8 个字符。

有任何想法吗?

.net c# .net-6.0 .net-8.0

26
推荐指数
1
解决办法
3060
查看次数

.NET 7 和 UseEndPoints()

我正在尝试将 .NET Core 3.1 项目转换为 .NET 7。

当我在课堂上使用它时Program.cs

app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages();

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)

它给了我这样的信息:

建议使用顶级路由注册 UseEndpoints

Show potential fixes然后,我在 Visual Studio 中单击,它显示以下提示:

app.UseEndpoints(endpoints =>
{
    _ = endpoints.MapRazorPages();

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来是一样的。

在.NET 7中,如果我需要使用RazorPages()该怎么办?

谢谢!

c# asp.net-core razor-pages .net-7.0 asp.net-core-7.0

25
推荐指数
1
解决办法
1万
查看次数

ASP.NET Core 6 应用程序部件项目必须引用哪些 Nuget 包

我正在创建一个 ASP.NET Core 6 应用程序,我想在其中集成单独程序集提供的其他区域。我遵循https://learn.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts?view=aspnetcore-6.0上的文档。在提供应用部件的项目中,我添加了一个扩展方法,IMvcBuilder可以方便地注册部件组件,例如:

\n
services.AddMvc().AddFeatureXyzParts();\n
Run Code Online (Sandbox Code Playgroud)\n

该扩展仅执行以下操作:

\n
public static IMvcBuilder AddFeatureXyzParts(this IMvcBuilder builder)\n{\n    if (builder == null) throw new ArgumentNullException(nameof(builder));\n    builder.AddApplicationPart(typeof(MvcBuilderExtensions).Assembly);\n    return builder;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在项目文件中,我将Sdk属性从更改Microsoft.NET.SdkMicrosoft.NET.Sdk.Web隐式引用 ASP.NET Core 6 SDK(因为它是为主应用程序项目设置的),但这会破坏构建,并出现错误,指出程序集缺少以下定义一个Main方法。

\n

由于它不是一个独立的 Web 应用程序程序集,而是一个提供附加控制器类型和服务的部件库,因此 I\xc2\xb4d 希望将该属性设置SdkMicrosoft.NET.Sdk. 然后我必须手动添加缺少的包引用。为此,该Microsoft.AspNetCore.App包对于 ASP.NET Core 6 来说似乎是错误的选择,并且Microsoft.AspNetCore.App.Refs不得使用。

\n

我需要什么参考资料?

\n

更新- 定义所需的入口点以满足构建

\n

作为一种允许我引用所需 ASP.NET Core 6 SDK 的解决方法,如果我添加定义方法的Microsoft.NET.Sdk.Web内部类,我就可以使用该 SDK 。有了这个,我就可以根据需要注册我的零件装配,并且控制器(即使是某个区域的一部分)可以很好地集成。 …

c# .net-core asp.net-core asp.net-core-6.0

24
推荐指数
1
解决办法
9871
查看次数

.NET 6 中使用多个文件的最小 API

在 .NET 6 中,可以创建最少的 API:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/products/{id}", (int id) => { return Results.Ok(); })
app.MapGet("/users/{id}", (int id) => { return Results.Ok(); })

app.Run();
Run Code Online (Sandbox Code Playgroud)

将端点分组到多个文件中而不是全部放在程序文件中的方法是什么?

ProductEndpoints.cs:

app.MapGet("/products/{id}", (int id) => { return Results.Ok(); })

UserEndpoints.cs

app.MapGet("/users/{id}", (int id) => { return Results.Ok(); })
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core .net-6.0 minimal-apis

22
推荐指数
3
解决办法
1万
查看次数

集成测试和托管 ASP.NET Core 6.0,无需启动类

要在以前版本的 .NET Core 中设置单元测试,我可以通过以下方式在测试项目中托管我的 Web 应用程序或 Web API:

IHost host = Host.CreateDefaultBuilder()
    .ConfigureWebHostDefaults(config =>
    {
        config.UseStartup<MyWebApp.Startup>();
        config.UseUrls("https://localhost:44331/");
        ...    
    })
    .Build();
Run Code Online (Sandbox Code Playgroud)

当前.NET 6.0不使用Startup类概念,因此无法引用。如何以正确、干净的方式在测试项目中托管 ASP.NET Core 应用程序?

c# unit-testing asp.net-core .net-6.0

20
推荐指数
1
解决办法
2万
查看次数