VS2010 / C#中的全局“使用”指令?

我很确定我知道答案,但我想知道是否有办法在我的C#项目中定义全局“使用”指令,这样我就不必在每个代码文件的顶部重复该指令。

我的兴趣实际上源于在.NET Framework中引入扩展方法。 使用扩展方法的唯一方法是为包含扩展方法的命名空间定义using指令。 如果没有using指令,我将失去扩展方法的Intellisensefunction,这意味着我不会总是看到可用的方法。

作为框架开发人员,确保框架中提供的类型和方法清晰可供开发人员使用对我来说至关重要。 虽然文档和培训服务于他们的目的,但我发现大多数开发人员都会遇到这个时期并滚动智能感知列表以查看可用的方法和属性。 即使他们转到对象浏览器或查看参考文档,他们也不会知道扩展方法,除非他们知道它。 这就是Intellisense的用武之地。

而且,虽然我可以将使用指令添加到VS使用的模板,但VS中的“删除并排序”选项将删除引用扩展方法的指令(如果没有使用)。

那么,所有这一切,是否有任何方法可以在VS 2010中定义全局“使用”指令? 如果没有,MS将来会考虑它的任何机会吗?

您可以通过确保在命名空间中未声明包含的类来将扩展方法放在全局命名空间中。 这将使它们在全球范围内可用。

至于默认命名空间 – 除了更改VS模板之外,这是不可能的。

当然,MS总是可以考虑它。 不太可能,但可能。

您可以考虑教育您的开发人员并提供有关扩展方法的约定(例如,已知的位置/命名空间架构),而不是寻找技术解决方案?

要回答您的实际问题,如果您将带有扩展的静态类放在没有命名空间的地方,它将随处可用。 小心使用!

如果它对您来说非常重要,您可以让您的公司购买ReSharper并将其安装在所有开发机器上,这样就可以为这些方法提供Intellisense,并可选择“自动添加”using指令。

从我听到的(我自己没有使用它)ReSharper扫描所有可能的程序集,我假设你可以配置它在创建新类时自动添加“using”指令,虽然我不是100%肯定。

您可以为包含using指令的类创建.net文件模板。

请参阅创建项目和项目模板( https://msdn.microsoft.com/en-us/library/ms247121.aspx )。

您可以将模板保存为扩展所在项目的一部分; 但是,这最好在不同的项目中完成。