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/