Visual Studio 2017 and the new .csproj InternalsVisibleTo

后端 未结 2 417
刺人心
刺人心 2020-12-13 11:56

Where do I put InternalsVisibleTo from AssemblyInfo in the new Visual Studio 2017 .csproj project file?

相关标签:
2条回答
  • 2020-12-13 12:36

    Just in case anyone would like to put InternalsVisibleTo within a .csproj file instead of AssemblyInfo.cs (a possible scenario is to have a naming convention between a project under test and a test project), you can do it like this:

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

    Having this the following code will be generated

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

    inside auto-generated AssemblyInfo.cs (e.g. for Debug configuration and .NET Standard 2.0 target)

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

    Additional Info

    In case you're on .NET Core 3.1 and this approach isn't working, you may have to explicitly generate assembly info by adding the following to your .csproj file:

    <PropertyGroup>
      <!-- Explicitly generate Assembly Info -->
      <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
    </PropertyGroup>
    
    0 讨论(0)
  • 2020-12-13 12:50

    To clarify Hans Passant's comment above, you simply have to add InternalsVisibleTo to any cs file in your project. For example, I created an AssemblyInfo.cs file in the root of the project and then added the following content (only):

    using System.Runtime.CompilerServices;
    
    [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=<ADD_KEY_HERE>")]
    
    0 讨论(0)
提交回复
热议问题