Используя Директивы, Пространство имен и Ссылку на сборку - все смешанные с StyleCop!

Мне нравится придерживаться правил форматирования StyleCop сделать код хорошим и ясным, но у меня недавно была проблема с одним из ее предупреждений:

Все директивы использования должны быть помещены в пространстве имен.

Моя проблема состоит в том, что у меня есть директивы использования, ссылка на сборку (для насмешки удаления файла), и пространство имен для манипулирования в одном из моих тестовых классов:

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 жалуется на директивы использования, не являющиеся в пространстве имен.

Помещение использований в пространстве имен дает ошибку, что "MoledType" не распознан.

Помещение и использования и ссылка на сборку в пространстве имен дает ошибку

'блок' не является допустимым местоположением атрибута для этого объявления. Допустимые местоположения атрибута для этого объявления являются 'типом'. Все атрибуты в этом блоке будут проигнорированы.

Кажется, что я попробовал каждое расположение, я могу, но напрасно - или решение не создаст, насмешка не будет работать или StyleCop, жалуется!

Кто-либо знает способ изложить их так, чтобы все было счастливо? Или я оказывающийся перед необходимостью игнорировать StyleCop, предупреждающий в этом случае?

6
задан Martin 18 June 2010 в 15:20
поделиться

2 ответа

Решено через две минуты!

Мне просто нужно было поместить полный путь к "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...
}

Надеюсь, кому-нибудь это пригодится!

11
ответ дан 8 December 2019 в 12:57
поделиться

Обычно все атрибуты уровня сборки помещаются в файл AssemblyInfo.cs. Обычно этот файл вообще не имеет никакого элемента пространства имен, и все атрибуты сборки определены с использованием полностью определенных имен.

6
ответ дан 8 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: