/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