c# – 使用指令,命名空间和程序集参考 – 所有这些都与StyleCop混在一起!

我喜欢坚持使用StyleCop的格式化规则来使代码变得更好和清晰,但我最近遇到了一个警告问题:

All using directives must be placed
inside of the namespace.

我的问题是我使用指令,程序集引用(用于模拟文件删除),以及在我的一个测试类中使用的命名空间:

using System;
using System.IO;
using Microsoft.Moles.Framework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: MoledType(typeof(System.IO.File))]

namespace MyNamespace
{
//Some Code
}

以上允许测试运行正常 – 但StyleCop抱怨使用指令不在命名空间内.

将usings放在命名空间内会产生“MoledType”无法识别的错误.

将usings和程序集引用放在命名空间中会产生错误

‘assembly’ is not a valid attribute
location for this declaration. Valid
attribute locations for this
declaration are ‘type’. All attributes
in this block will be ignored.

似乎我已经尝试了所有的布局,但无济于事 – 要么解决方案不会构建,嘲弄将无效或StyleCop抱怨!

有没有人知道如何设置这些以便一切都快乐?或者在这种情况下我是否必须忽略StyleCop警告?

最佳答案
两分钟后解决了!

我只需要在程序集引用中放置“MoledType”的完整路径 – 这意味着我可以将其保留在命名空间之外,其中包含using指令,如下所示:

[assembly: Microsoft.Moles.Framework.MoledType(typeof(System.IO.File))]
namespace MyNamespace
{
using System;
using System.IO;
using Microsoft.Moles.Framework;
using Microsoft.VisualStudio.TestTools.UnitTesting;

// Some Code...
}

希望有人会觉得这很有用!

转载注明原文:c# – 使用指令,命名空间和程序集参考 – 所有这些都与StyleCop混在一起! - 代码日志