相关疑难解决方法(0)

'using'指令应该在命名空间的内部还是外部?

我一直在运行StyleCop而不是一些C#代码,并且它一直报告我的using指令应该在命名空间内.

是否存在将using指令放入命名空间而不是命名空间外的技术原因?

.net c# namespaces stylecop code-organization

1975
推荐指数
11
解决办法
19万
查看次数

.NET 6(稳定)Program.cs 中的 IConfiguration 设置

这似乎是一个类似的问题,但没有一个答案适合我的代码...:阅读 Main Program.cs 中的 appsettings.json

这非常相似,但由于某种原因对我不起作用:ASP.NET Core 6 how to access Configuration during setup

我正在将 .NET 6 beta 应用程序移植到 .NET 6 的稳定版本。

这意味着我想移植负责导入 IConfiguration 的代码(是的,我知道它向后兼容单独的Startup.csProgram.cs文件,但我愿意使用新语法)。IConfiguration 基本上是 ASP.NET Core 中的文件 appsettings.json。

在旧代码中,它看起来像这样:

 public class Startup
    {
        internal static IConfiguration Configuration { get; private set; }
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

using Microsoft.Extensions.Configuration;
// IConfiguration init test
var Configuration = builder.Configuration;
Run Code Online (Sandbox Code Playgroud)

似乎 Microsoft.Extensions.Configuration 甚至没有被使用!我得到的语法来自这篇博客文章:https://gavilan.blog/2021/08/19/getting-the-iconfiguration-in-the-program-class-asp-net-core-6/

这个问题很原始,但我似乎没有搞清楚。感谢任何帮助解决此问题的帮助,因为它可以在新的 .NET 6 最小 API 中工作。

我发现本指南很有用,但它显然没有解决手头的问题: …

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

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

如何在控制台应用程序.NET 6.0的Program.cs中全局声明静态实例

我创建了一个控制台应用程序.NET 6.0来学习单例模式。但我观察到文件发生了重大变化Program.cs

namespaceclass方法Main已从program.cs中删除.NET 6.0

我相信将要编写的代码program.cs将被视为在Main方法内。但我想创建两个使用全局初始化实例的静态方法,但我无法做到这一点。

通过声明如下实例:

在此输入图像描述

它给出编译错误:

CS0106 修饰符“static”对此项目无效

在静态方法中使用实例时,如下所示: 在此输入图像描述

它给出编译错误:

CS8421:静态本地函数不能包含对“tableservers1”的引用。

这是所有代码program.cs

using SingletonApp;

static TableServers tableservers1 = TableServers.GetInstance();
static TableServers tableservers2 = TableServers.GetInstance();

Console.WriteLine("Hello, World!");

for (int i = 0; i < 5; i++)
{
    Host1();
    Host2();
}
Console.WriteLine();


static void Host1()
{
    Console.WriteLine("Host1 Next server is: " + tableservers1.GetNextServer());
}

static void Host2()
{
    Console.WriteLine("Host2 Next server is: …
Run Code Online (Sandbox Code Playgroud)

.net c# console-application .net-6.0 c#-10.0

9
推荐指数
1
解决办法
4960
查看次数

如何控制 C#10 / .NET6.0 项目中的全局使用?

.NET 6.0 中的 C#10 支持称为全局 using 指令的新功能。

它似乎做了两件事:

  • 当您在全局使用中有一个命名空间时,您不必using ...在 *.cs 文件的顶部包含该命名空间的 。
  • 一些命名空间被隐式添加到全局使用中,这些命名空间取决于项目类型。

我知道我可以通过将以下内容添加到我的项目文件中来禁用将命名空间隐式添加到全局使用中:

<PropertyGroup>
    <ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 这个全局 using 指令功能是否只是为了方便起见,以便全局包含一些常用的命名空间,这样这些 using 就不会弄乱 *.cs 文件的顶部?
  2. 是否可以添加我自己的全局用途?
  3. 是否可以删除一些隐式包含的全局使用(例如,在名称冲突的情况下)?
  4. 这个全局 using 指令功能是否还有我没有想到的其他用途?

全局使用文件位于// <auto-generated/>顶部,因此我不能仅在此文件中添加/删除/编辑全局使用。

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

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

在 C# 和 .NET6 中何处以及如何包含 using 指令?

我正在使用 .NET 6 在 Visual Studio Code 中对 C# 进行编程。在 .NET 6 中,不再需要显式的 main 方法。有谁知道如何以及在哪里包含 using 指令,例如 using System.Diagnostics

这就是我的程序目前的样子:

await MeakeBreakfastAsync();

async Task MakeBreakfastAsync(){
    ...
}

static async Task<string> MakeCoffeAsync() {
    ...
}

static async Task<string> MakeToastAsync() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

c# omnisharp .net-6.0

0
推荐指数
1
解决办法
234
查看次数