【发布时间】:2010-10-31 10:26:36
【问题描述】:
有没有办法在整个解决方案中全局引用命名空间?
所以不要在每个代码文件中都有这些行:
using System;
using MyNamespace;
只需声明一次,每个代码文件都会使用它们。
顺便说一句,我正在使用 Visual Studio。
【问题讨论】:
标签: c# .net namespaces
有没有办法在整个解决方案中全局引用命名空间?
所以不要在每个代码文件中都有这些行:
using System;
using MyNamespace;
只需声明一次,每个代码文件都会使用它们。
顺便说一句,我正在使用 Visual Studio。
【问题讨论】:
标签: c# .net namespaces
不,您不能在 .NET 或 .NET CORE 的整个解决方案中全局引用命名空间。
但您可以在解决方案中全局使用项目明智的命名空间。此功能可从c#10/.NET 6 获得。目前处于预览阶段,但将于 2021 年 11 月发布
=========项目级 .NET 6 全局使用命名空间=========
在项目的根目录下创建一个类文件,例如GlobalNamespace.cs
global using System;
global using System.Linq;
global using System.Text.RegularExpressions;
global using System.Threading.Tasks;
那么你就不需要在项目的其他.cs文件中声明using namespace已经全局声明了。
【讨论】:
在C# 10.0 中,您可以使用Global Usings。
global using System;
global using MyNamespace;
【讨论】:
作为 CSharp 的新手,我想念的一个技巧是查看“参考”(在 VS 中),右键单击并“添加新参考”。这在组合多个项目时特别方便,我已经制作了一些通用类以在其他地方重用。
【讨论】:
正如其他人所提到的,Visual Studio 模板是必经之路。
请注意,仅向模板添加 using 语句并不能确保编译器能够解析您的类型。因此,如果您在每个类中为 MyNamespace 添加 using 语句,您可能还需要为您的项目添加程序集引用。有关更多信息,请参阅C# FAQ。
【讨论】:
不,C# 没有这个概念。每个源文件在这方面都是独立的。 (如果 using 指令在命名空间声明中,它们也独立于对等命名空间声明中的其他 using 指令。根据我的经验,这种情况非常罕见。)
不过,您不需要 ReSharper 来更改新类中包含的内容。您可以使用Visual Studio templates。
编辑:只是为了澄清关于在命名空间中使用指令的要点,假设我们有(全部在一个文件中):
using Foo;
namespace X
{
using Bar;
// Foo and Bar are searched for code in here, but not Baz
}
namespace Y
{
using Baz;
// Foo and Baz are searched for code in here, but not Bar
}
通常我在一个文件中只有一个命名空间声明,并将所有 using 指令放在它之前。
【讨论】:
来自SO question 和后续blog post。您可以编辑 Visual Studio 默认模板。
为此,请查看此 zip 中的文件:[Program Files][Visual Studio]\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class.zip
并根据需要修改 Class.cs 文件。此外,Visual Studio 可能已在此处缓存此文件: [程序文件][Visual Studio]\Common7\IDE\ItemTemplatesCache\CSharp\Code\1033\Class.zip
【讨论】:
不,这是不可能的。
如果您使用的是ReSharper,您可以设置一个选项以在您创建的每个新文件中包含特定的 using 指令。
【讨论】: