首页 > 解决方案 > 如何有条件地编译“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

...以及相关项目属性的屏幕截图: 在此处输入图像描述

当项目设置为 时,由 包围的程序集属性#if-#endif不会灰显Release。如何强制编译器(VS???)识别#if-#endif指令?

标签: c#.net-corepreprocessor-directiveassemblyinfo

解决方案


如果您无法取消勾选 DEBUG,请使用您自己的符号,例如INTERNALS_VISIBLE_TO_TESTING. 仅在 RELEASE 配置中定义它。

但是,我个人不会为此烦恼:我会InternalsVisibleTo在两种配置中都包含该属性。在发布配置中使用它并没有什么坏处,而且它有一个明显的好处:这意味着您可以测试您要发布的实际二进制文件。


推荐阅读