| 

.NET C# Java Javascript Exception

7
Ich habe von meinem Kunden eine Klasse .cs erhalten um einen Drucker anzusteuern.
Da ich mein Frontend nun leider in VB programmiere komme ich nicht an die Objekte ran.
Ich habe die klasse bis jetzt nur ins Projekt aufgenommen.
Wie kann ich den beigestellten Code einbinden ?
News:
28.05.2013
jstiefken 41 3
6 Antworten
5
Mit Visual Studio ist es nicht möglich im selben Projekt C# und VB.Net-Code zu mischen. Der Mono-Compiler soll es können (wobei ich es noch nicht selbst ausprobiert habe) und mit ein paar Tricks soll es auch der msbuild-Compiler können wenn man ihn zusammen mit SharpDevelop benutzt.

Mir fallen zwei Möglichkeiten ein dein Problem zu lösen.

1. Du verpackst die C#-Klasse in ein eigenes Assembly (C#-Libary-Project) welche du in deinem VB-Project einbindest ("Add Assembly"), beide Projekte können in der selben Solution sein.

2. Du lässt den C#-Code in VB.Net-Code umwandeln. Z.B. mit developerFussion's Convert C# to VB.NET Tool. Ggf. wirst du aber noch ein wenig Zeit in die Nachbearbeitung des convertierten Codes stecken müssen.

Bevorzugen würde ich die erste Möglichkeit. Bei dieser hast du weniger Probleme wenn dein Kunde dir eine neue Version der C#-Klasse zuschickt.
28.05.2013
Floyd 14,6k 3 9
Floyd 14,6k 3 9
1
Warum nicht einfach kompilieren und dann die dll verwenden?
28.05.2013
Xantiva 2,3k 2 9
1
Soweit ich weiß, kann ein Projekt nur von einem Typ sein - also entweder VB oder C#.

Du könntest deiner Solution aber ein C#-Projekt hinzufügen, das die Klasse vom Kunden enthält.
Dieses C#-Projekt muss dann als Abhängigkeit/Verweis in den VB-Projekt angegeben werden.
Dann solltest du die C#-Klasse auch in dem VB-Projekt nutzen können (Verwendung des passenden Namespace vorrausgesetzt).
28.05.2013
jsc 289 1 7
1
Eine Mischung von C#- und VB-Quelltext in einem einzelnen (!) Projekt ist nicht möglich!

Da Du ausschließlich die cs-Klasse erhalten hast, legst Du Dir zunächst mit C# ein neues Projekt des Typs "Klassenbibliothek" an. In dieses Projekt nimmst Du die cs-Klasse auf und übersetzt das ganze dann in ein eigenständiges dll-Assembly. Dieses bindest Du dann per Verweis in ein neues VB-Projekt ein. Eine parallele Verwaltung der Klassenbibliothek und des VB-Projektes in einer Solution (Projektgruppe) ist zwar möglich, aber nicht zwingend erforderlich. Achte lediglich darauf, dass Du der Klassenbibliothek über die Projekteigenschaften einen sinnvollen Assemblynamen und Standardnamespace zuordnest.

Zwar ist die Portierung des c#-Quelltextes auch auf VB-Quelltext möglich, mitunter sind aber in Abhängigkeit von dem verwendeten Quellcode und dem eingesetzten Konvertiertool manuelle Nachbearbeitungen erforderlich. Dabei sind Kennnisse in der c#-Syntax hilfreich. Bei der zuvor angegführten Variante sind hingegen keine C#-Kenntnisse erforderlich.
28.05.2013
Claus M. 2,9k 9
1
Na ja, wenn die Klasse externe Bibliotheken anspricht, werden unter Umstaenden doch einige c# Kenntnisse erforderlich sein, wenn gar eine nicht vorhandene externe Bibliothek benoetigt wird, wird es schwierig. Am einfachsten waere es die vom Kunden uebersetzte Assembly zu bekommen und zu referenzieren.
Xantiva100 28.05.2013
Würde man eine solche Klasse im Quelltext weitergeben? Wenn kommerzielle Fremdkomponenten eingebunden sind, stellt sich die weitere Pflege ohnehin als sehr problematisch dar.
Claus M. 05.06.2013
1
wie Floyd schon sagte ist der einfachste Weg, ein zusätzliches C# dll-Projekt in deine Solution aufzunehmen, die C#-Klasse dort einzubinden und das C#-Projekt im VB-Projekt zu referenzieren. Die C#-Klasse muss als
public class ...

deklariert sein, damit das funktioniert (aber ich gehe davon aus, dass dies bereits so ist :-)).

Gruß
Klaus
29.05.2013
luedi 1,9k 1 9
0
Einfach den C# Code in VB.NET Code konvertieren?
28.05.2013
ffordermaier 8,4k 3 9
Wieso bekommt der Hinweis eine negative Bewertung? (Korrektur meinerseits +1). Es gibt keinen Grund, keine separate DLL zu benutzen, und wenn der TE unbedingt auf VB besteht, dann soll er den C#-Code halt konvertieren. VB.Net ist alleine aus dem Grund sowieso schon abzuraten, da 90% aller Quellen im Internet in C# vorliegen. Zudem gehört der TE zu der Sorte, die sich im Nachhinein nichtmal mehr bedanken.
Jens Duczmal 16.06.2013

Stelle deine .net-Frage jetzt!