Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Visual Studio 2017 and the new .csproj InternalsVisibleTo

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

like image 797
Luka Avatar asked Mar 15 '17 13:03

Luka


People also ask

What is AssemblyInfo Cs in C#?

AssemblyInfo. cs contains information about your assembly, like name, description, version, etc. You can find more details about its content reading the comments that are included in it.


2 Answers

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> 
like image 55
Ivan Zaruba Avatar answered Sep 26 '22 00:09

Ivan Zaruba


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>")] 
like image 39
noBreakingChanges Avatar answered Sep 24 '22 00:09

noBreakingChanges