.NET

Che altro dire: .NET!
Named Mutex: non mettete '\' nel nome!

Non avevo mai usato un named Mutex, ma oggi ho bisogno di acquisire un Lock a livello di sistema e non solo interno al processo e ovviamente ci ho perso 1 ora per capirci qualcosa! In poche ed imprecise parole: se nel nome di un Mutex anteponete la stringa "Global\" il Mutex avrà validità contemporanea su tutte le sessioni Terminal Services, se mettete "Local\" o non mettete niente avrà effetto solo sulla sessione corrente. Dov'é il problema? Se voi mettete una stringa tipo "Global\MioPC\MiaRisorsa" o "Local\MioPC\MiaRisorsa" o "MioPC\MiaRisorsa" vi beccate una IOException non propriamente parlante ("La sintassi del nome del file, della...

posted @ Sunday, June 12, 2011 6:10 PM | Feedback (0)

Power Tools: Backup TFS

Per tutti quelli che non seguono il blog di Brian Harry: dalla prossima versione dei Power Tools sarà disponibile una procedura di backup VERAMENTE ALLA PORTATA DI TUTTI! Soprattutto per chi ha installato la versione Basic, i piccoli team che si aspettano una procedura di backup semplificata. Maggiori informazioni (veramente dettagliate): alla fonte.

posted @ Thursday, August 19, 2010 9:03 AM | Feedback (0)

[TFS] TFSDeleteProject non (sempre) cancella tutto il progetto

In TFS l'unico metodo per cancellare un progetto é tramite un tool a linea di comando: TFSDeleteProject. Alcune informazioni relative al progetto poterbbero però sopravvivere anche a questa operazione, in particolare: - Il TFSWarehouse non subirà alcuna modifica, i dati relativi al progetto rimarranno caricati. Per eliminare questi dati é necessario fare il rebuild del TFSwarehouse (vedi Setupwarehouse) - Le cartelle dove viene fatto il drop delle build non vengono toccate - Metadati dei workitem condivisi tra più progetti - Shelveset che contengono file provenienti da un altro progetto Maggiori informazioni: qui Fonte: neno's blog

posted @ Wednesday, January 21, 2009 9:33 AM | Feedback (0)

Process.Start e limiti sulla quantità di argomenti

Lo so che é una cosa abbastanza inusuale avviare un processo con una stringa di comando (ampiamente) più lunga di 2000 caratteri, ma se dovesse servirvi sappiate un paio di cose: Su windows <= windows 2000 (ok, dovrebbero essere un ricordo) il limite é sempre e comunque 260 caratteri, su windows >= windows XP il limite teorico é di 32Kb Non usate Process.StartInfo.UseShellExecute = true (o gli overload Process.Start(string, string), ecc.) Impostando UseShellExecute = true (valore di default) riceverete una bella: "System.ComponentModel.Win32Exception: Access Denied"

posted @ Wednesday, July 23, 2008 4:19 PM | Feedback (0)

Graphics.DrawImageUnscaled

Se dovesse capitarvi, come al sottoscritto, di scervellarvi per capire perché il metodo DrawImageUnscaled della classe Graphics vi stampa un'immagine che é tutt'altro che UNscaled la spiegazione sta nel fatto che l'immagine di origine e di destinazione hanno impostato dei differenti DPI... Al di là del fatto che mi sembrava molto più logico che usasse i pixel come unità di riferimento, la soluzione é usare il metodo DrawImage. Se anche voi come il sottoscritto temete un degrado di prestazioni vi rassicuro che potete dormire sonni tranquilli: DrawImageUnscaled internamente usa DrawImage (No Comment!).

posted @ Sunday, July 20, 2008 4:31 PM | Feedback (0)

Team System: data dei file

Estraendo files da un server Team Foundation la data dei files presenti sul disco viene impostata alla data in cui questi sono stati estratti. Non che ci veda niente di strano, anzi... Purtroppo però numerose persone che erano abiuate ad usare Visual Source Safe sentono questo come un problema (non chiedetemi perché, ma vi garantisco che almeno una decina di persone me l'ha segnalato). Soluzione? Creare un programmino (console) che imposti la data dei file NON ESTRATTI in base alla data dell'ultimo checkin (scusate la lunghezza): public static void ChangeDate(string ServerName, string workspaceName, string workspaceOwner, string pattern, bool subDirectories){    TeamFoundationServer tfs...

posted @ Monday, July 30, 2007 2:36 PM | Feedback (0)

Team System: TeamFoundationServerFactory.GetServer accede al registry - LA SOLUZIONE

Se cercate di creare un oggetto TeamFoundationServer da un thread che gira con un account utente che non ha le credenziali di scrittura sul registry incapperete nell'eccezione [SecurityException: Requested registry access is not allowed.] (come già descritto qui).Grazie all'inossidabile Lorenzo ed ai suoi preziosi contatti ho trovato la soluzione. Sostanzialmente (se ho ben capito) se specifico un server nei metodi (ed i loro rispettivi overloads):TeamFoundationServerFactory.GetServer(serverName)new TeamFoundationServer(serverName)passando come parametro il SOLO NOME del server viene effettuato dapprima un accesso in lettura alla chiave:HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\TeamFoundation\Serversper verificare se esiste un server memorizzato con il nome passato, dappoi tenta l'accesso al server specificato sulla porta standard (8080)....

posted @ Wednesday, June 20, 2007 5:48 PM | Feedback (0)

Team System: TeamFoundationServerFactory.GetServer accede al registry

E se il mio utente non ha permesso di scrivere nel registry?!Risposta: System.ThrowHelper.ThrowSecurityException(ExceptionResource resource) +48Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) +2780921 Microsoft.TeamFoundation.Client.RegisteredServers.OpenCurrentUser(Boolean writable, Boolean shouldCreate) +50 Microsoft.TeamFoundation.Client.RegisteredServers.GetUriForServer(String serverName) +43 Microsoft.TeamFoundation.Client.TeamFoundationServer.GetUriForName(String name) +93 Microsoft.TeamFoundation.Client.TeamFoundationServer.get_Uri() +25 Microsoft.TeamFoundation.Client.CheckAuthenticationProxy..ctor(TeamFoundationServer server) +22 Microsoft.TeamFoundation.Client.TeamFoundationServer.Authenticate(Boolean useProvider, ICredentialsProvider provider) +58 Microsoft.TeamFoundation.Client.TeamFoundationServer.Authenticate() +17 E tutto questo per memorizzare l'elenco dei server conosciuti per l'utente... Direi che sono DISCRETAMENTE senza parole... alla faccia di sviluppare con zero privilegi!!! Francamente per quanto mi sforzi non riesco a trovare nessuna soluzione SPECIALMENTE perché la mia é un'applicazione ASP.NET che dovrebbe girare con impersonation!!! :-S

posted @ Tuesday, June 19, 2007 6:29 PM | Feedback (2)

Aruba Free Hosting!

Faccio un po' di publicità ad una contestatissima (anche se secondo me nemmeno troppo giustamente) società di hosting italiano: su aruba é possibile registrarsi per una "demo" di ASP.NET 2.0 con SQL Server 2005 (express). 100 Mb di spazio + 50 di DB + dominio di quarto livello...Provare per credere!!! Fonte: http://testdotnet.aruba.it/

posted @ Thursday, May 25, 2006 5:45 PM | Feedback (4)

Minimo comune multiplo in Visual Basic

Dovesse servirvi...Eccolo:  ''' ----------------------------------------------------------------------------- ''' <summary> ''' Calcola il minimo comune multiplo ''' </summary> ''' <param name="num">Interi tra cui calcolare il mcm</param> ''' <returns></returns> ''' <remarks> ''' </remarks> ''' <history> '''   [michele]       08/02/2006      Created ''' </history> ''' ----------------------------------------------------------------------------- Public Overloads Shared Function mcm(ByVal ParamArray num() As Int32) As Int32   If num.Length = 0 Then     Return 0   ElseIf num.Length = 1 Then     Return num(1)   End If   mcm = num(0)   For N As Int32 = 1 To num.GetUpperBound(0)     mcm = mcm(mcm, num(N))   Next N End Function ''' ----------------------------------------------------------------------------- ''' <summary> ''' Calcola il minimo comune multiplo ''' </summary> ''' <param name="a">Primo intero</param> ''' <param name="b">Secondo intero</param> ''' <returns></returns> ''' <remarks> ''' </remarks> ''' <history> '''   [michele]       08/02/2006      Created ''' </history> ''' ----------------------------------------------------------------------------- Public Overloads Shared Function mcm(ByVal a As Int32, ByVal b As Int32) As Int32   Dim c As Long = a * b   'Dim r As Long   Do     mcm = a Mod b     a = b     b = mcm   Loop While mcm <> 0   Return Convert.ToInt32(c \ a) End Function powered by IMHO 1.3

posted @ Monday, March 6, 2006 6:27 PM | Feedback (0)

Full .NET Archive