Визуальная студия 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.

Другие вопросы по тегам