Archive for the 'Visual Studio' Category

Page 2 of 2

Abgeschnittene Strings

Ein anderes interessantes Phänomen lief mir gerade über den Weg: Liest man aus einem SQL Server eine richtig lange Zeichenkette (z.B. mehr als 2000 Zeichen, z.B. mit einer ‘FOR XML …’ Transformation im Select) wird einem das Ergebnis willkürlich bei um die 1000 Zeichen abgeschitten.
Eine generelle Workaroundfunktion ist schnell gebastelt:

Private Shared Function GetLongStringData(ByVal statement As String) As String
	Dim sql As New System.Data.SqlClient.SqlCommand()
	Dim con As New System.Data.SqlClient.SqlConnection()
	con.ConnectionString = "connectionstring"
	sql.CommandText = statement
	sql.Connection = con
	con.Open()
	Dim r As System.Data.SqlClient.SqlDataReader = sql.ExecuteReader()
	Dim strbuilder As New StringBuilder()
	While r.Read()
		strbuilder.Append(r(0))
	End While
	con.Close()
	Return strbuilder.ToString()
End Function

Stellt sich allerdings nach wie vor die Frage warum die Daten abgeschnitten werden. Im SQL Server Management Studio wird alles korrekt angezeigt. Ich vermute das Problem liegt irgendwo bei der Übergabe vom SQL Server in den .Net String. Wenn jemand eine Idee hat, möge er sich bei mir melden. :)

“Cannot find template with ID (TestType) for CSharp test project”

Diese Fehlermeldungen haben mich heute beim Erstellen eines neuen Testprojektes erwischt:

“Cannot find template with ID TestProject-V1-SimpleUnitTest for CSharp test project”
“Cannot find template with ID TestProject-V1-WordManualTest for CSharp test project”
“Cannot find template with ID TestProject-V1-HelpTest for CSharp test project”

Nicht grade praktisch, wenn man sich gerade in Test Driven Development einarbeitet. Die Ursache dieser Fehler ist recht banal. Die eingestellte Sprache im Visual Studio ist Deutsch. Nun hat Microsoft allerdings die Testprojektvorlagen nur für Englisch bereitgestellt. Man muss also in den Internationalen Einstellungen vom Visual Studio die Sprache auf Englisch umstellen.

Wenn man unter %Program Files%\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\Test nachschaut, gibt es lediglich einen Ordner “1033″ welcher die LanguageID für Englisch ist (en-US). Leider hilft auch ein manuellen Anlegen eines Ordners und kopieren der Itemtemplates für die deutsche Sprache (1031) nichts, es treten auch dann noch Fehlermeldungen auf.

ASP.NET 2 in 30 minutes: Feeds made simple

Newsfeeds können sehr praktisch sein. Schon mal an eine Interaktion von Feed <-> System Management Server oder Feed <-> Domain gedacht?
Ein praktisches Beispiel:
In einem Unternehmen werden regelmäßig Systemhotfixe, Systemupdates, Application Updates etc. verteilt. Dabei sollen die User aber vorher informiert werden damit sie wissen, das ein Update zur Installation ansteht oder das die Performance kurzfristig beeinträchtigt werden kann.
In der Regel gehen dann ellenlange Mails mit (für den User) unverständlichen Informationen durch das Unternehmen.
Man könnte aber auch einen (oder mehrere) zentrale(n) Newsfeed(s) anbieten. Einen für Hotfixe, noch einen für Office-Patches oder auch einen für Updates einer spezifischen Software (Visual Studio meinetwegen).
Großes Gerede, aber was brauchen wir?
Wie benötigen ein wenig ASP.Net 2 Webspace. Wenn vorhanden noch eine SQL-Datenbank, es reicht aber auch wenn man eine Access-Datenbank nutzt.
Dort legt man 2 Tabellen an:

CREATE TABLE Channels (
[id] [int] IDENTITY(1,1) NOT NULL,
[title] [nvarchar](255) NULL,
[description] [ntext] NULL,
[managingeditor] [nvarchar](50) NULL,
[webmaster] [nvarchar](50) NULL);

CREATE TABLE Items(
[id] [int] IDENTITY(1,1) NOT NULL,
[title] [nvarchar](255) NULL,
[description] [ntext] NULL,
[pubdate] [datetime] NULL,
[author] [nvarchar](50) NULL,
[channel] [int] NULL,
[published] [bit] NULL DEFAULT ((0)),
[targetou] [ntext] NULL,
[smscollection] [nvarchar](50) NULL,
[clientlist] [ntext] NULL);

Die Tabellennamen sind selbsterklärend: Channels für die verfügbaren Feeds und Items für alle Nachrichten. Bei der Tabelle Items habe ich 3 Spalten um die Nachrichten genauer zu Verteilen:
In “targetou” kann ein spezifischer LDAP-String eingetragen werden, sodass später nur Clients die Nachricht bekommen die auch Mitglied der OU sind. Gleiches gilt für “smscollection”. Eine eingetragene Collection aus SMS stellt sicher, das nur Clients die in der Collection sind die Nachricht erhalten. Und die Spalte “clientlist” ist für spezifische Rechnerlisten. Dort sollen Semikolonseparierte FQDN-Namen von Rechnern eingetragen werden die die Nachricht erhalten sollen (z.B. zur Definition von Testfeldern).
Continue reading ‘ASP.NET 2 in 30 minutes: Feeds made simple’