关于msbuild:Visual Studio 2017和新的.csproj InternalsVisibleTo

Visual Studio 2017 and the new .csproj InternalsVisibleTo

我在哪里将AssemblyInfo中的InternalsVisibleTo放在新的Visual Studio 2017 .csproj项目文件中?


万一有人想将InternalsVisibleTo放在.csproj文件而不是AssemblyInfo.cs(可能的情况是在测试项目和测试项目之间有一个命名约定),你可以这样做:

1
2
3
4
5
<ItemGroup>
    <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
      <_Parameter1>$(MSBuildProjectName).Test</_Parameter1>
    </AssemblyAttribute>
</ItemGroup>

拥有此代码将生成以下代码

1
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("MyProject.Test")]

内部自动生成的AssemblyInfo.cs(例如,用于调试配置和.NET Standard 2.0目标)

1
/obj/Debug/netstandard2.0/MyProject.AssemblyInfo.cs


要澄清上面的Hans Passant的评论,您只需将InternalsVisibleTo添加到项目中的任何cs文件中。 例如,我在项目的根目录中创建了一个AssemblyInfo.cs文件,然后添加了以下内容(仅限):

1
2
3
using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=<ADD_KEY_HERE>")]