Partager via


/moduleassemblyname (Spécifier l'assembly friend pour le module) (Option du compilateur C#)

Mise à jour : novembre 2007

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 non publics sont accessibles au .netmodule.

Notes

/moduleassemblyname doit être utilisé lors de la génération d'un .netmodule, et quand les conditions suivantes sont remplies :

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

  • Vous savez le nom de l'assembly dans lequel le .netmodule sera construit.

  • L'assembly existant a accordé l'accès d'assembly friend à l'assembly dans lequel le .netmodule sera construit.

Pour plus d'informations sur la génération d'un .netmodule, consultez /target:module (Créer un module à ajouter à l'assembly) (Options du compilateur C#).

Pour plus d'informations sur les assemblys friend, consultez Assemblys friend (Guide de programmation C#).

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 exemple génère un .netmodule qui accède à un type non public dans l'assembly moduleassemblyname_1.dll. En sachant que ce .netmodule sera généré dans un assembly appelé csman_an_assembly, nous pouvons spécifier /moduleassemblyname, permettant ainsi au .netmodule d'accéder aux types non publics dans un assembly qui a accordé l'accès d'assembly friend à 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();
    }
}

An_Internal_Class.Test called

Voir aussi

Autres ressources

Options du compilateur C#

Propriétés de projet (Visual Studio)