Condividi tramite


/moduleassemblyname (opzione del compilatore C#)

Specifica un assembly i cui tipi non pubblici possono accedere ai file con estensione netmodule.

/moduleassemblyname:assembly_name

Argomenti

  • assembly_name
    Il nome dell'assembly dei cui membri non pubblici il .netmodule può accedere.

Note

/moduleassemblyname deve essere utilizzato quando viene compilato un .netmodule e dove le condizioni seguenti sono vere:

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

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

  • 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 (opzioni del compilatore C#).

Per ulteriori informazioni sugli assembly Friend, vedere Assembly Friend (C# e Visual Basic).

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

Questa 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"); 
    }
}

Questo esempio compila un .netmodule che accede a un tipo non pubblico nell'assembly moduleassemblyname_1.dll. Sapendo che questo .netmodule verrà compilato in un assembly denominato csman_an_assembly, è possibile specificare /moduleassemblyname, consentendo al .netmodule di accedere i tipi non pubblici in un assembly che consente 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();
    }
}

In questo esempio di codice viene compilato l'assembly csman_an_assembly facendo riferimento all'assembly compilato in precedenza e al .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();
    }
}
  

Vedere anche

Attività

Procedura: modificare le proprietà e le impostazioni di configurazione dei progetti

Altre risorse

Opzioni del compilatore C#