在 C# 中使用 CrossProject 全局

CrossProject global using in C#

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

仅针对“最小”示例。

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

这里的关键是我想要一个名为“setup”的库,它引用所有其他库,并且使用“global usings”,能够将该库导入包含所有域的 webapplications逻辑

但是,当我在新的 setup 项目中使用 global using Shared.API.xxx 创建文件时,似乎什么也没做。

我还在 webapplication 中导入了 setup 项目做下一个:

  <ItemGroup>
    <Using Include="Shared.Setup" />
  </ItemGroup>

是否可以跨项目全局使用?

注意:当我导入 global using Shared.API.xxx 时,网络应用程序内的任何地方都按预期工作。

作为 docs 状态 - global usings 被限制为编译(项目)中的文件:

Adding the global modifier to a using directive means that using is applied to all files in the compilation (typically a project).

如果您可以引入可传递的全局使用,想象一下进口污染。

但是您可以共享 global using,例如通过手动将它们添加 到每个项目:

  • 在 VS 中 - 右键单击目标项目 -> 添加 -> 现有项目但不要单击“添加”,而是单击右侧的下拉箭头和 select“添加为 Link”
  • 或手动编辑 .csproj 添加下一个:
<ItemGroup>
    <Compile Include="Relative_Path_To_Shared.Setup.SharedUsingsFile.cs" Link="SharedUsingsFile.cs" />
</ItemGroup>