有没有办法将“using”指令分组到一个单独的文件中?

Is there a way to group "using" directives in a separate file?

提问人:Vaccano 提问时间:8/27/2010 最后编辑:ravenVaccano 更新时间:8/6/2023 访问量:821

问:

假设你有一些使用语句的样板。这样说:

#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Category = Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute;
#else
using NUnit.Framework;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
using TestContext = System.Object;
#endif

(这是我的单元测试代码)如果我不想把它放在每个有单元测试的文件的顶部,有没有办法在这里设置一个间接级别?

我认为这行不通,但这是我想到的一个例子:

创建一个名为 NUnitCompatability.cs 的文件,并将上面的代码放入其中。然后添加到我所有的单元测试文件中。这在 Delphi 中有效,但在 C# 中不起作用(我认为)。但是有没有其他方法可以获得这种类型的功能呢?using NUnitCompatability

使用 using 指令 C#

评论

1赞 Alex 8/27/2010
我的第一个想法是,为什么要同时运行不同的测试框架?如果你在一个团队中工作,你应该决定为所有人使用一个工具。如果有人没有合适的 VS 版本,每个人都应该使用 NUnit。如果您想坚持使用 MS,请升级您的开发人员 VS 许可证。你试图做的事情,是我会不惜一切代价尽量避免的事情,因为它会使你的项目设置更难理解,并导致你将来可能会做出不同的假设或决定。
0赞 Vaccano 8/27/2010
我们之所以要运行两个不同的测试框架,是因为 MS Test 比 NUnit 慢得多。但是 MS Test 与 TFS(我们使用的)集成。所以。。。我想使用 NUnit 进行开发(因为它速度很快),然后签入并运行我的测试并将结果保存在 TFS 中。
0赞 Nathan Ernst 8/27/2010
如果希望自动包含此内容,可以修改新文件的 VS 模板。

答:

4赞 Dirk Vollmar 8/27/2010 #1

不,这是不可能的。

您可能认为指令类似于 C 语言中的 an。事实并非如此。using#include

指令仅告诉编译器在哪些命名空间中搜索特定文件中使用的类型。因此,您也无法将它们存储在单独的文件中。using

我不会费心在我的指令代码中放置条件编译器指令。在编译时几乎没有与未使用的 s 相关的开销(搜索空间稍大),在运行时也完全没有开销usingusing

评论

1赞 Bob 8/27/2010
如果命名空间不可用(由于缺少程序集引用),则会出现编译错误。这可能是他在这里试图避免的(基于 NUnit 存在的不同行为)
2赞 JaredPar 8/27/2010 #2

C# 中没有对此的内置支持。C# 预处理器是一个非常有限的工具,不支持样式操作,在样式操作中,你可以从两个文件中创建一个文件。#include

是的,对于像这样非常简单的情况,这可能有点令人沮丧。但它超过了许多人已经做过的坏事,并将继续使用 C++ 预处理器。

2赞 Cyberherbalist 8/27/2010 #3

如果您有一组特定的 using 语句要用于单元测试类,那么这似乎是专门为此目的制作新模板的好理由。您不局限于 VS 提供的文件类型 -- 您可以扩展它们以创建自己的文件类型,您可以在其中放置自己选择的 using 语句。在这里描述该过程需要很长时间,因此请在此处查看 MSDN:

http://msdn.microsoft.com/en-us/library/6db0hwky(v=VS.100).aspx