如何指定多个项目的 InternalsVisibleTo
InternalsVisibleTo 属性允许你指定一个或多个程序集,这些程序集可以访问当前程序集中的内部类型。经常在进行单元测试时使用,例如,你可以在一个项目中定义一个内部类型,然后在另一个项目中进行单元测试。本文将介绍如何指定多个项目的 InternalsVisibleTo,从而不需要在每个项目中都指定一遍。
代码演示
假如我们有一个项目,名称为 TestProject1。则我们需要在 TestProject1 中指定 InternalsVisibleTo 属性,如下所示:
[assembly: InternalsVisibleTo("TestProject1.Tests")]
但其实,我们也可以在 TestProject1.csproj 中指定 InternalsVisibleTo 属性,如下所示:
<Project>
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
<_Parameter1>TestProject1.Tests</_Parameter1> <!-- We use the value of AssemblyName to declare the value of the attribute -->
</AssemblyAttribute>
</ItemGroup>
</Project>
既然如此,我们便可以使用 Directory.Build.props 文件来指定多个项目的 InternalsVisibleTo 属性,如下所示:
<Project>
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
<_Parameter1>$(AssemblyName).Tests</_Parameter1> <!-- We use the value of AssemblyName to declare the value of the attribute -->
</AssemblyAttribute>
</ItemGroup>
</Project>
这样,所有的项目都会自动指定 InternalsVisibleTo 属性,而不需要在每个项目中都指定一遍。
总结
本文介绍了如何指定多个项目的 InternalsVisibleTo 属性,从而不需要在每个项目中都指定一遍。
参考资料
- directory.build.props[1]
- Adding AssemblyMetadataAttribute using new SDK project, with MSBuild[2]
- 本文作者: newbe36524
- 本文链接: https://www.newbe.pro/ChatAI/0x016-How-to-InternalsVisibleTo-for-multiple-projects/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
参考资料
[1]directory.build.props: https://learn.microsoft.com/visualstudio/msbuild/customize-your-build?view=vs-2019&WT.mc_id=DX-MVP-5003606#directorybuildprops-and-directorybuildtargets
[2]Adding AssemblyMetadataAttribute using new SDK project, with MSBuild: https://stu.dev/adding-assemblymetadataattribute-using-new-sdk-project-with-msbuild/
相关文章
- Kotlin学习快速入门(7)——扩展的妙用
- Jetpack架构组件学习(3)——Activity Results API使用
- TornadoFx实现侧边栏菜单效果
- TornadoFx中的css美化
- TornadoFx设置保存功能(config和preference使用)
- 关于百分百浏览器(cent browser)无法使用QQ快捷登录问题
- 关于Jitpack发布aar,会丢失内置依赖库问题
- 【stars-one】星之音乐下载器
- TornadoFx的EventBus使用
- Jetpack架构组件学习(2)——ViewModel和Livedata使用
- Jetpack架构组件学习(1)——LifeCycle的使用
- Jetpack架构组件学习(0)——总结篇
- Uni-App 实现资讯滚动
- Jetpack Compose学习(7)——MD样式架构组件Scaffold及导航底部菜单
- Jetpack Compose学习(6)——关于Modifier的妙用
- Jetpack Compose学习(5)——从登录页美化开始学习布局组件使用
- Markdown表情参考
- Jetpack Compose学习(4)——Image(图片)使用及Coil图片异步加载库使用
- Jetpack Compose学习(3)——图标(Icon) 按钮(Button) 输入框(TextField) 的使用
- Jetpack Compose学习(2)——文本(Text)的使用