提问人:SonOfPirate 提问时间:11/7/2010 最后编辑:AzharSonOfPirate 更新时间:1/11/2022 访问量:5127
VS2010/C# 中的全局“使用”指令?
Global "using" directives in VS2010/C#?
问:
我很确定我知道答案,但我想知道是否有办法在我的 C# 项目中定义一个全局“using”指令,这样我就不必在每个代码文件之上重复该指令。
我的兴趣真正植根于 .NET Framework 中扩展方法的引入。使用扩展方法的唯一方法是为包含扩展方法的命名空间定义一个 using 指令。如果没有 using 指令,我将失去扩展方法的 Intellisense 功能,这意味着我不会始终看到哪些方法可用。
作为框架开发人员,确保框架中提供的类型和方法清晰且可供使用开发人员使用,这对我来说很关键。虽然文档和培训达到了目的,但我发现大多数开发人员都会在这段时间内滚动浏览 Intellisense 列表,以查看可用的方法和属性。即使他们转到对象浏览器或查看参考文档,他们也不会知道扩展方法,除非他们知道它。这就是 Intellisense 的用武之地。
而且,虽然我可以将 using 指令添加到 VS 使用的模板中,但 VS 中的“删除和排序”选项将删除引用扩展方法的指令(如果未使用)。
那么,话虽如此,有没有办法在 VS 2010 中定义全局“使用”指令?如果没有,MS 有没有可能在未来考虑它?
答:
可以通过确保未在命名空间中声明包含类来将扩展方法放在全局命名空间中。这将使它们在全球范围内可用。
至于默认命名空间 - 除了更改 VS 模板之外,这是不可能的。
当然,MS总是有可能考虑它。不太可能,但有可能。
与其寻找技术解决方案,也许你应该考虑教育你的开发人员同事,并提供一个关于扩展方法的约定(例如,已知的位置/命名空间模式)?
评论
using
为了回答你的实际问题,如果你把你的静态类和扩展放在没有命名空间中,它将在任何地方都可用。请小心使用!
评论
如果它对你来说真的很重要,你可以让你的公司购买 ReSharper 并将其安装在所有开发机器上,这样一来,你就可以为这些方法提供 Intellisense,并可以选择“自动添加”using 指令。
据我所知(我自己没有使用它)ReSharper 会扫描所有可能的程序集,我认为您可以将其配置为在创建新类时自动添加“using”指令,尽管我不是 100% 确定这一点。
评论
您可以为包含 using 指令的类创建 .net 文件模板。
请参见创建项目和项模板 (https://msdn.microsoft.com/en-us/library/ms247121.aspx)。
您可以将模板另存为包含扩展的项目的一部分;但是,这最好在不同的项目中完成。
在 没有选项可以这样做,但您可以使用全局使用。VS 2010
VS 2022
C# 10.0
global using <TheNamespace>;
该指令是 C# 10 中的一项新语言功能。在 .NET 6 上运行时,某些命名空间中还提供了 using 指令。global using
implicit global
全局 using 指令是在 C# 10 中引入的。
它可以通过与本地 using 指令相同的方式使用,只是您在它的前面放置一个关键字,以便指示编译器在整个项目中提供对以下指令的访问:global
global using System;
建议的标准是将所有指令放在一个文件中,以将它们与项目的其余部分分开。global using
Usings.cs
评论