C# 中的 CrossProject 全局使用

TiG*_*reX 4 .net c# .net-6.0 c#-10.0

现在 C#10 已经就位,我正在重构一些代码。我注意到参考文献的数量是疯狂的。出于这个原因,我想使用 ,将每个项目之间共享的所有内容重构为一个“共享的” global usings,但它没有按预期工作。

仅举“最小”示例。

我有一个类库来配置 API 配置(中间件等)。然后我还有其他几个库。

这里的关键是,我想要一个名为“setup”的库,它引用所有其他库,并且使用“全局使用”,能够在包含所有域逻辑的 Web 应用程序中导入该库

setup但是,当我在新项目中创建文件时,global using Shared.API.xxx似乎没有执行任何操作。

我还在网络应用程序中导入了setup执行以下操作的项目:

  <ItemGroup>
    <Using Include="Shared.Setup" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这可以进行跨项目全局使用吗?

注意:当我导入global using Shared.API.xxx网络应用程序中的任何位置时,它会按预期工作。

Gur*_*ron 6

正如文档所述 - global usings 仅限于编译(项目)中的文件:

将全局修饰符添加到 using 指令意味着 using 应用于编译中的所有文件(通常是项目)。

想象一下,如果你能引入传递性的全球使用,就会产生进口污染。

但是您可以global using通过手动将它们添加为每个项目的链接来共享:

  • 在 VS 中 -右键单击​​目标项目->添加->现有项目,但不要单击“添加”,而是单击右侧的下拉箭头并选择“添加为链接”
  • 或者通过添加以下内容来手动编辑 .csproj:
<ItemGroup>
    <Compile Include="Relative_Path_To_Shared.Setup.SharedUsingsFile.cs" Link="SharedUsingsFile.cs" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)