(免责声明):我知道什么是模棱两可的引用,以及如何解决它.我只是不明白为什么这会出现在这里

我有以下代码:

using SMBLibrary;

namespace SquirrelCam
{
    public class NothingAtAll
    {
        public void DoNothing()
        {
            var fileAttribute = FileAttributes.Normal;
        }
    }
}

这会在VS中产生以下错误:

CS0104:"FileAttributes"是"SMBLibrary.FileAttributes"和"System.IO.FileAttributes"之间的不明确引用

I know I can solve this人完全合格,SMBLibrary.FileAttributes人.第why章这一次出现我对System.IO没有任何用处.不是在课堂上,不是在全局.我甚至还查了全文以确定.

我还只需要Nuget包(SMBLibrary和MS.AspNet.WebHooks.Receivers.Generic),根据Nuget描述,它们似乎也不依赖于System.IO.此外,在.csproj文件中也找不到任何内容.

该项目对NetCore.App的依赖并不令人意外,NetCore.App使用了System.IO,但仅此一项并不足以导致这种行为.

我已经清理了解决方案,仍然收到该警告.

推荐答案

启动.NET 6默认模板可实现implicit global usings:

从.NET6开始,隐式全局Using指令被添加到新的C#项目中.这意味着您可以使用在这些命名空间中定义的类型,而不必指定它们的完全限定名或手动添加Using指令.隐式方面指的是将全局Using指令添加到项目的obj目录中生成的文件中.

对于使用以下SDK之一的项目,将添加隐式全局USING指令:

  • Microsoft.NET.Sdk
  • 100
  • Microsoft.NET.Sdk.Worker
  • Microsoft.NET.Sdk.WindowsDesktop

System.IO是隐式导入的名称空间之一(查看已经链接的文档),因此当您添加using SMBLibrary;时会出现问题,其中也有FileAttributes.

您可以通过在csproj文件中将ImplicitUsings设置为disable来完全禁用该功能:

<ImplicitUsings>disable</ImplicitUsings>

或者只需添加具有Remove属性的Using个属性即可删除不需要的属性:

<ItemGroup>
    <Using Remove="System.IO"/> <!-- will remove only the System.IO-->
</ItemGroup>

Csharp相关问答推荐

禁用AutoSuggestBox项目更改时的动画?

如何使用Unity和MRTK3将手网添加到Hololens 2应用程序中

如何阻止注释被包含在C#release build. exe中

如何注册接口类型,类型<>

MS Graph v5.42.0:在寻呼消息时更改页面大小

MigraDoc文档

在.NET MAUI.NET 8中如何防止按钮点击时出现灰色反馈

C#普罗米修斯指标

在swagger示例中添加默认数组列表

使用Dapper映射联接查询对象数据到使用SplitOn;

HttpClient SendAsync与多线程环境中的ArchiveZip

如何在不复制或使用输出的情况下定义项目依赖

如何在.NET AOT中为所有枚举启用JsonStringEnumConverter

在使用StringBuilder时,如何根据 colored颜色 设置为richTextBox中的特定行着色?

如何在microsoft.clearscript.v8的jsondata中使用Linq

如何实现有条件的自定义Json转换器隐藏属性

Blazor Server/.NET 8/在初始加载时调用异步代码是否冻结屏幕,直到第一次异步调用完成?

如何使用EPPlus C#在单个单元格中可视化显示多行文字

C#中类库项目的源代码生成器

类/值和日期的泛型方法