Visual Studio 将InternalsVisibleTo放置在何处

9jyewag0  于 2022-11-25  发布在  其他
关注(0)|答案(3)|浏览(207)

与此问题相关的是,AssemblyInfo的生成是如何工作的?
我已经将InternalsVisibleTo放在了一个程序集的第一个类的文件中,我意识到它会很有用。它似乎更适合与其他程序集属性一起放在AssemblyInfo中,但我不希望它被无意中覆盖。
那么,它应该去哪里呢?

enxuqcxy

enxuqcxy1#

程序集级属性可以出现在任何代码文件中;但是,按照惯例,它们被放置在AssemblyInfo文件中。这有助于发现,因为这是人们(或工具)在调查问题时通常会查看的位置。
我已经使用InternalsVisibleTo很多年了,并将其放置在AssemblyInfo文件中。我从来不知道它会被工具iidoeVisualStudio(所有版本)覆盖。

bf1o4zei

bf1o4zei2#

AssemblyInfo实际上只是一种组织程序集范围属性的方法。
没有理由不能将所有代码放在一个巨大的.cs文件中,并将其传递给MSBuild。您将得到相同的最终结果。
我有理由拥有多个AssemblyInfo文件- AssemblyInfo.cs是特定于每个程序集的,但CommonAssemblyInfo在许多程序集之间共享,并且包含由构建系统生成的版本号等内容。

e1xvtsh3

e1xvtsh33#

现在是2022年,随着SDK样式项目的引入,另一个放置InternalsVisibleTo属性的选项是项目文件。将以下行添加到*.csproj文件中:

<ItemGroup>
  <InternalsVisibleTo Include="ProjectName.Tests" />
</ItemGroup>

另一种可能有用的情况是使用参数化项目名称,如下所示:

<ItemGroup>
    <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
      <_Parameter1>$(MSBuildProjectName).Tests</_Parameter1>
    </AssemblyAttribute>
</ItemGroup>

不确定,但我假设您可以将此功能用于.NET 5+。
最后,我同意@Tim Lloyd的观点。将InternalsVisibleTo属性放在程序集中的位置(在AssemblyInfo.cs或项目文件中)可以提高可发现性,最终这是一个程序集级别的属性。

相关问题