如何指定多个项目的 InternalsVisibleTo

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何指定多个项目的 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/

以上是关于如何指定多个项目的 InternalsVisibleTo的主要内容,如果未能解决你的问题,请参考以下文章

如何将一个Java项目打包打成多个Jar包

Kafka中@KafkaListener如何动态指定多个topic

如何使用 NSFetchedResultsController 设置过滤指定组中项目的 NSPredicate

安卓项目如何把日志输出到指定文件

Tomcat 部署多个项目指定项目启动顺序

让一个 csproj 项目指定多个开发框架[转]