在新的Visual Studio 2017 .csproj项目文件中将AssemblyInfo中的InternalsVisibleTo放在何处?
答案 0 :(得分:70)
以防万一有人希望将InternalsVisibleTo
放在.csproj
文件而不是AssemblyInfo.cs
中(可能的情况是在被测项目之间有一个命名约定一个测试项目),你可以这样做:
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>$(MSBuildProjectName).Test</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
生成以下代码
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("MyProject.Test")]
在自动生成的AssemblyInfo.cs中(例如,对于Debug配置和.NET Standard 2.0目标)
/obj/Debug/netstandard2.0/MyProject.AssemblyInfo.cs
答案 1 :(得分:25)
为了澄清Hans Passant上面的评论,您只需将InternalsVisibleTo添加到项目中的任何cs文件中。例如,我在项目的根目录中创建了一个AssemblyInfo.cs文件,然后添加了以下内容(仅限):
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=<ADD_KEY_HERE>")]
答案 2 :(得分:12)
从 .NET 5 开始,这在添加到您的 csproj
后实际上有效:
<ItemGroup>
<InternalsVisibleTo Include="YourProject.Tests.Unit" />
</ItemGroup>
可以在 dotnet 的 GitHub 存储库的 this PR 上查看有关此功能的工作和讨论。