Condividi tramite


/moduleassemblyname (opzione del compilatore C#)

Specifica un assembly ai cui tipi non pubblici netmodule possono accedere.

/moduleassemblyname:assembly_name

Argomenti

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

Note

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

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

  • Si conosce il nome dell'assembly in cui netmodule di essere compilato.

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

Per ulteriori informazioni sulla compilazione di . 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 crea un . netmodule che accede a un tipo non pubblico nell'assembly moduleassemblyname_1.dll. Sapendo che questo. netmodule sarà compilato in un assembly denominato csman_an_assembly, è possibile specificare /moduleassemblyname, consentendo al . 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();
    }
}

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

Altre risorse

Opzioni del compilatore C#

Proprietà del progetto (Visual Studio)