Condividi tramite


/moduleassemblyname (specifica dell'assembly Friend per il modulo) (opzione del compilatore C#)

Aggiornamento: novembre 2007

Specifica un assembly con tipi non pubblici a cui un .netmodule può accedere.

/moduleassemblyname:assembly_name

Argomenti

  • assembly_name
    Nome dell'assembly con tipi non pubblici a cui un .netmodule può accedere.

Note

Utilizzare /moduleassemblyname per la compilazione di un .netmodule e nei casi in cui le seguenti condizioni sono vere:

  • Il .netmodule richiede l'accesso a tipi non pubblici in un assembly esistente.

  • Si conosce il nome dell'assembly in cui verrà compilato il .netmodule.

  • L'assembly esistente ha concesso l'accesso assembly Friend all'assembly in cui verrà compilato il .netmodule.

Per ulteriori informazioni sulla compilazione di un .netmodule, vedere /target:module (creazione di un modulo da aggiungere all'assembly) (opzioni del compilatore C#).

Per ulteriori informazioni sugli assembly Friend, vedere Assembly friend (Guida per programmatori C#).

L'opzione non è disponibile dall'interno dell'ambiente di sviluppo, ma soltanto durante la compilazione dalla riga di comando.

L'opzione del compilatore non è disponibile in Visual Studio e non può essere modificata a livello di codice.

Esempio

Nell'esempio viene compilato un assembly che dispone di un tipo privato e che fornisce l'accesso assembly Friend a un assembly denominato 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"); 
    }
}

Nell'esempio viene compilato un .netmodule che accede a un tipo non pubblico nell'assembly moduleassemblyname_1.dll. Sapendo che il .netmodule verrà compilato in un assembly denominato csman_an_assembly, è possibile specificare /moduleassemblyname in modo che il .netmodule acceda a tipi non pubblici in un assembly che ha concesso l'accesso assembly Friend a 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();
    }
}

Nell'esempio di codice viene compilato l'assembly csman_an_assembly, facendo riferimento al .netmodule e all'assembly compilati in precedenza.

// 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

Vedere anche

Altre risorse

Opzioni del compilatore C#

Proprietà del progetto (Visual Studio)