In questo articolo sono spiegate le funzionalità del(...)

Cristian Civera

di Cristian Civera, in .NET, sabato 11 dicembre 2004 ore 08.00

In questo articolo sono spiegate le funzionalità del compilatore C# 2. Le novità son poche, molte delle opzioni c'erano già prima. Tra questi una cosa non la conoscevo: i file .rsp.
Sono normalissimi files di testo che contengono tutti gli argomenti che normalmente passeremmo al compilatore. In questo modo possiamo fornire questi file insieme al nostro progetto e ber la compilazione basterà lancare:
csc @progetto.rsp
E' qualcosa di utile e comunque molto lontano da msbuild ma in alcuni può servire. Esiste già un file csc.rsp nella stessa directory del compilatore che viene "incluso" automaticamente e che referenzia quelli che sono i normali assembly solitamente usati.
Si può disattivare queste inclusione con l'opzione /noconfig.
La novità sono alias per gli assembly. Avrete senz'altro visto leggendo articoli su C# 2 l'uso del prefisso global::namespace.tipo per poter cercare un tipo partendo dal namespace di root e non da quello corrente. Per esempio:

using System;
class MyApp
{
public class System { }
const int Console = 7;
const int myInt = 66;
static void Main()
{
System.Console.WriteLine(myInt);
}
}

In questo caso sono presenti due tipi con il medesimo nome. System.Console dell'assembly System.dll che tutti conosciamo e System.Console dell'assembly corrente. Il compilatore prenderà come riferimento l'assembly corrente. Se volessimo accedere a System.dll dovremmo usare

global::System.Console.WriteLine(myInt);

Certo, bisogna evitare casi omonimia ma non si sa mai che possa servire. Queste funzionalità è più ampia però di quanto viene illustrata perché :: è un nuovo operatore per sfruttare gli alias.
Possiamo infatti dichiare nel nostro codice dei nomi per mappare un certo tipo ad un certo assembly:

extern alias tipo1;
extern alias tipo2;

tipo1::miaClasse.Qualcosa();
tipo2::miaClasse.Qualcosa();

In questo caso abbiamo un tipo miaClasse col medesimo namespace e metodo. Quindi sfruttiamo gli alias per riferirci ad uno o all'altro assembly.
Ovviamente in fase di compilazione dovremo dire di che assemblies si trattano:

csc /r:tipo1:assembly1.dll /r:tipo2:assembly2.dll

In pratica si può dire che global è un alias predefinito che mappa tutti gli assemblies.

Commenti

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.



Segnala su: Facebook MSDN Social Twitter Segnalo Wikio Diggita Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl

Nella stessa categoria
I più letti del mese
TagCloud
.NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Framework 4.0, ADO.NET Entity Framework, AJAX, Architettura, ASP, ASP.NET, ASP.NET 2.0, ASP.NET 2.0 per tutti, ASP.NET 4.0, ASPItalia.com, Custom Control, Databinding, Datagrid, HttpRuntime, IIS, Javascript, LINQ, LINQ to Entities, LINQ to SQL, Media Center, Microsoft Expression, Object Oriented Programming, Off Topic, PDC 2008, Silverlight, Silverlight - animazioni, Silverlight 2.0, Silverlight 3.0, User Control, Visual Studio, Windows 7, Windows CardSpace, Windows Client, Windows Communication Foundation, Windows Live Services, Windows Presentation Foundation, Windows Server, Windows Vista, Windows Workflow Foundation, XAML, XBox 360, XHTML, XML, XPS, XSLT
BLOG INFO
  • 199 post, 86 commenti, 42 trackback
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom
IN EVIDENZA