如何有条件地编译 `InternalsVisibleTo(...)` 程序集信息?
How to conditionally compile `InternalsVisibleTo(...)` assembly info?
使用 .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
...以及相关项目属性的截图:
项目设置为Release
时,#if-#endif
包围的程序集属性不会变灰。我怎样才能强制编译器(VS???)识别#if-#endif
指令?
如果您无法取消勾选 DEBUG,请使用您自己的符号,例如INTERNALS_VISIBLE_TO_TESTING
。仅在 RELEASE 配置中定义它。
但是,我个人不会为此烦恼:我会在两种配置中都包含 InternalsVisibleTo
属性。将它包含在发布配置中没有任何坏处,而且它有一个明显的好处:这意味着您可以测试您要发布的实际二进制文件。
使用 .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
...以及相关项目属性的截图:
项目设置为Release
时,#if-#endif
包围的程序集属性不会变灰。我怎样才能强制编译器(VS???)识别#if-#endif
指令?
如果您无法取消勾选 DEBUG,请使用您自己的符号,例如INTERNALS_VISIBLE_TO_TESTING
。仅在 RELEASE 配置中定义它。
但是,我个人不会为此烦恼:我会在两种配置中都包含 InternalsVisibleTo
属性。将它包含在发布配置中没有任何坏处,而且它有一个明显的好处:这意味着您可以测试您要发布的实际二进制文件。