Partager via


/moduleassemblyname (Options du compilateur C#)

Spécifie un assembly dont les types non publics peuvent être accédés par un .netmodule.

/moduleassemblyname:assembly_name

Arguments

  • assembly_name
    Le nom de l'assembly dont les types publics le .netmodule peut accéder.

Notes

/moduleassemblyname doit être utilisé lors de la création d'un .netmodule, ainsi que les conditions suivantes sont remplies :

  • Le .netmodule doit accéder aux types non publics d'un assembly existant.

  • Vous connaissez le nom de l'assembly sur lequel le .netmodule est généré.

  • L'assembly référencé existante a accordé l'accès d'assembly ami à l'assembly dans lequel le .netmodule sera généré.

Pour plus d'informations sur la construction d'un .netmodule, consultez /target:module (Options du compilateur C#).

Pour plus d'informations sur les assemblys friend, consultez Assemblys friend (C# et Visual Basic).

Cette option n'est pas accessible à partir de l'environnement de développement Visual Studio. Elle est disponible uniquement lors de la compilation à partir de la ligne de commande.

Cette option du compilateur n'est pas disponible dans Visual Studio et ne peut pas être modifiée par programme.

Exemple

Cet exemple génère un assembly avec un type privé, et cela donne l'accès d'assembly friend à un assembly appelé csman_an_assembly.

// moduleassemblyname_1.cs
// compile with: /target:library
using System;
using System.Runtime.CompilerServices;

[assembly:InternalsVisibleTo ("csman_an_assembly")]

class An_Internal_Class 
{
    public void Test() 
    { 
        Console.WriteLine("An_Internal_Class.Test called"); 
    }
}

Cet echantillon construit un .netmodule qui accède à un type non public dans l'assembly moduleassemblyname_1.dll. En sachant que ce .netmodule est généré dans un assembly nommé csman_an_assembly, on peut spécifier /moduleassemblyname, ce qui permet au .netmodule l'accès public dans un assembly qui a accordé l'accès amical à l'assembly csman_an_assembly.

// moduleassemblyname_2.cs
// compile with: /moduleassemblyname:csman_an_assembly /target:module /reference:moduleassemblyname_1.dll
class B {
    public void Test() {
        An_Internal_Class x = new An_Internal_Class();
        x.Test();
    }
}

Cet exemple de code génère le csman_an_assembly d'assembly, en référençant l'assembly généré précédemment et .netmodule.

// csman_an_assembly.cs
// compile with: /addmodule:moduleassemblyname_2.netmodule /reference:moduleassemblyname_1.dll
class A {
    public static void Main() {
        B bb = new B();
        bb.Test();
    }
}
  

Voir aussi

Tâches

Comment : modifier des propriétés de projet et des paramètres de configuration

Autres ressources

Options du compilateur C#