Как условно скомпилировать `InternalsVisibleTo (...)` информацию о сборке? - PullRequest
0 голосов
/ 01 июля 2018

Используя .Net Core 2.1, мой AssemblyInfo.cs выглядит так:

с использованием System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("RazorWare.Core.Media")]
[assembly: InternalsVisibleTo("RazorWare.Core.Business")]

#if DEBUG
[assembly: InternalsVisibleTo("RazorWare.CoreDL.Testing")]
[assembly: InternalsVisibleTo("RazorWare.CoreDL.Testing.CreateNativeWindow")]
[assembly: InternalsVisibleTo("RazorWare.CoreDL.Testing.CreateEventPump")]
#endif

... и снимок экрана соответствующих свойств проекта: enter image description here

Атрибуты сборки, окруженные #if-#endif, не отображаются серым цветом, если для проекта установлено значение Release. Как заставить компилятор (VS ???) распознать директиву #if-#endif?

1 Ответ

0 голосов
/ 01 июля 2018

Если вы не можете отменить пометку DEBUG, используйте свой собственный символ, например, INTERNALS_VISIBLE_TO_TESTING. Определите это только в конфигурации RELEASE.

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

...