.NET

Che altro dire: .NET!
[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 @ mercoledì 21 gennaio 2009 9.33 | 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 @ mercoledì 23 luglio 2008 16.19 | 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 @ domenica 20 luglio 2008 16.31 | 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 @ lunedì 30 luglio 2007 14.36 | 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 @ mercoledì 20 giugno 2007 17.48 | 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 @ martedì 19 giugno 2007 18.29 | 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 @ giovedì 25 maggio 2006 17.45 | 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 @ lunedì 6 marzo 2006 18.27 | Feedback (0)

Encoding delle Risorse

L'applicazione Windows Forms alla quale sto lavorando ha la possibilità di creare automaticamente un nuovo database sul quale lavorare. Per caricare valori nei dizionari ho messo nelle risorse dei file .sql che carico ed eseguo in un SQLCommand... E qui viene il bello: alcune insert into non funzionavano correttamente: non venivano inseriti i caratteri accentati... Dopo un paio di figuracce su usenet e sul forum di ugi mi sono accorto che leggevo le risorse con l'encoding di default anziché il corretto encoding: System.Text.Encoding.GetEncoding(1252) ...mannaggia a me!!! powered by IMHO 1.3

posted @ venerdì 3 marzo 2006 14.35 | Feedback (0)

Eventi di aggiunta/rimozione di Form MDIChild

Intercettare l'aggiunta/rimozione di form MDIChild ad una form MDIParent é un'operazione che ho scoperto essere piuttosto macchinosa. L'area contenitore di form MDIChild non é altro che un controllo nascosto di tipo System.Windows.Forms.MdiClient. Questo controllo espone come tutti i controls container gli eventi di ControlAdded e ControlRemoved che corrispondo all'aggiunta o alla rimozione di una form Child.Questo é il codice di una Form MDI base con gli eventi ChildFormAdded e Removed: Public Class MDIParentForm  Inherits System.Windows.Forms.Form  Protected WithEvents mdiClient As System.Windows.Forms.MdiClient#Region "Eventi"  Public Event ChildFormAdded As System.Windows.Forms.ControlEventHandler  Public Event ChildFormRemoved As System.Windows.Forms.ControlEventHandler  ''' -----------------------------------------------------------------------------  '''   ''' Solleva l'evento ChildFormAdded  '''   '''   '''   '''   '''   '''     [michele]    23/02/2005    Created  '''   ''' -----------------------------------------------------------------------------  Protected Overridable Overloads Sub OnChildFormAdded(ByVal e As System.Windows.Forms.ControlEventArgs)    RaiseEvent ChildFormAdded(Me, e)  End Sub  ''' -----------------------------------------------------------------------------  '''   ''' Solleva l'evento ChildFormRemoved  '''   '''   '''   '''   '''   '''     [michele]    23/02/2005    Created  '''   ''' -----------------------------------------------------------------------------  Protected Overridable Overloads Sub OnChildFormRemoved(ByVal e As System.Windows.Forms.ControlEventArgs)    RaiseEvent ChildFormRemoved(Me, e)  End Sub#End Region  ''' -----------------------------------------------------------------------------  '''   ''' Crea una form MDIParent  '''   '''   '''   '''   '''     [michele]    03/03/2006    Created  '''   ''' -----------------------------------------------------------------------------  Public Sub New()    Me.IsMdiContainer = True  End Sub  ''' -----------------------------------------------------------------------------  '''   ''' Ritorna il controllo MDIClient della form corrente  '''   '''   '''   '''   '''   '''     [michele]    03/03/2006    Created  '''   ''' -----------------------------------------------------------------------------  Protected Overridable Function GetMDIClientControl() As System.Windows.Forms.MdiClient    For Each ctl As System.Windows.Forms.Control In Me.Controls      If TypeOf ctl Is System.Windows.Forms.MdiClient Then        Return DirectCast(ctl, System.Windows.Forms.MdiClient)      End If    Next ctl  End Function  ''' -----------------------------------------------------------------------------  '''   ''' Recupera il controllo MDIClient dalla control's collection  '''   '''   '''   '''   '''   '''     [michele]    03/03/2006    Created  '''   ''' -----------------------------------------------------------------------------  Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)    Me.mdiClient = Me.GetMDIClientControl    MyBase.OnLoad(e)  End Sub#Region "Riflessione degli eventi di MDIClient"  Private Sub mdiClient_ControlAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles mdiClient.ControlAdded    Me.OnChildFormAdded(e)  End Sub  Private Sub mdiClient_ControlRemoved(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles mdiClient.ControlRemoved    Me.OnChildFormRemoved(e)  End Sub#End RegionEnd Class powered by IMHO 1.3

posted @ venerdì 3 marzo 2006 12.48 | Feedback (0)

Full .NET Archive


Post Categories

Archives

Image Galleries