Визуальная студия 2017 года.csproj InternalsVisibleTo
Где поместить InternalsVisibleTo из AssemblyInfo в новый файл проекта Visual Studio 2017 .csproj?
3 ответа
Чтобы уточнить комментарий Ханса Пассанта выше, вам просто нужно добавить InternalsVisibleTo в любой файл cs в вашем проекте. Например, я создал файл AssemblyInfo.cs в корне проекта, а затем добавил следующее содержимое (только):
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=<ADD_KEY_HERE>")]
На всякий случай кто-то хотел бы поставить 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
Начиная с .NET 5 это действительно работает после добавления в ваш
csproj
:
<ItemGroup>
<InternalsVisibleTo Include="YourProject.Tests.Unit" />
</ItemGroup>
Работу и обсуждение этой функции можно увидеть в этом PR в репозитории dotnet на GitHub.