Laden...

VB.NET Methoden in C# aufrufen

Erstellt von deathhero vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.719 Views
D
deathhero Themenstarter:in
12 Beiträge seit 2005
vor 18 Jahren
VB.NET Methoden in C# aufrufen

Hallo,

Ich habe folgendes Problem:
IDE: MS Visual Studio 2005 Beta

Ich habe ein VB.NET Projekt bekommen und ich brauche bestimmte Methoden aus diesem Projekt in meinem C# Projekt.( in C# das Ganze neu zu programmieren wäre zuviel Aufwand)

Kann ich von C# diverse Methoden aus dem VB.NET Projekt aufrufen/verwenden?
Müsste doch aufgrund des .NET Frameworks funktionieren,oder?

mfg deathhero

S
8.746 Beiträge seit 2005
vor 18 Jahren

Überhaupt kein Problem. Du kannst in einer Anwendung beliebige viele .NET-Sprache mischen, aber es gibt eine Beschränkung:

Ein Assembly ( in Studio entspricht das einem Projekt) muss komplett in einer Sprache geschrieben sein.

Du kannst also die Hauptanwendung (.exe) in C# schreiben und dabei auf ein VB.NET Assembly (.dll) zugreifen.

Im schlimmsten Falle musst du also deinen Code umstrukturieren um die Beschränkung zu umgehen.

Q
992 Beiträge seit 2005
vor 18 Jahren

Original von svenson
Überhaupt kein Problem. Du kannst in einer Anwendung beliebige viele .NET-Sprache mischen, aber es gibt eine Beschränkung:

Ein Assembly ( in Studio entspricht das einem Projekt) muss komplett in einer Sprache geschrieben sein.

Du kannst also die Hauptanwendung (.exe) in C# schreiben und dabei auf ein VB.NET Assembly (.dll) zugreifen.

Im schlimmsten Falle musst du also deinen Code umstrukturieren um die Beschränkung zu umgehen.

Sollte das in .Net 2.0 nicht geändert werden?

210 Beiträge seit 2005
vor 18 Jahren

Du musst einfach die VB.NET-Assembly (wahrscheinlich ist es ja eine DLL) als Referenz deinem C#-Projekt hinzufügen.
Dann kannst du auf die Inhalte (natürlich nur auf die öffentliche Schnittstelle) der VB.Net-Assembly genau so zugreifen, als ob diese direkt in deinem Projekt vorhanden wären.

Blog

Portable WebDAV Library

Windows Server Advanced Power Management
Erweitertes Energie-Management unter Windows

S
8.746 Beiträge seit 2005
vor 18 Jahren

Denkbar, sehe aber das Problem, dass die jeweiligen Sprachen ja ein paar Features haben, die nicht CLS-compliant sind. Und nur die CLS-compliance stellt sicher, dass die Sprachen überhaupt interoperabel sind. Auf der anderen Seiten können auch Module (innerhalb von Assemblies) einzeln als CLS-compliant markiert werden, so dass das Mixing doch möglich sein müßte.

L
667 Beiträge seit 2004
vor 18 Jahren

Ich habs mal spaßeshalber ausprobiert, aber es gab schon direkt Probleme mit dem Namespace. Der Namespace in der VB.NET Assembly liess sich nicht 1:1 in die aufrufende C# Assembly übernehmen mittels using.

Kann sein, dass ich irgendwas vergessen habe, aber ganz so einfach wie manche behaupten gehts jedenfalls nicht...

"It is not wise to be wise" - Sun Tzu

D
deathhero Themenstarter:in
12 Beiträge seit 2005
vor 18 Jahren

vielen dank für eure antworten.
also ich werde einmal versuchen meinen vb code in eine dll zu packen und diese dann als referenz meinem c# projekt hinzufügen.

bin gespannt ob das funktioniert 😁

danke jedenfalls 👍

F
10.010 Beiträge seit 2004
vor 18 Jahren

Natürlich geht es einfach, aber du musst natürlich auch die DLL als referenz einfügen.

Ich habe in meinen Projekten teilweise 30 DLL's die alle in den verschiedenen
.NET Sprachen geschrieben sind, und das ist alles problemlos untereinander
austauschbar.

Das ist ja gerade eine der stärken des Systems.

6.862 Beiträge seit 2003
vor 18 Jahren

Original von FZelle
Natürlich geht es einfach, aber du musst natürlich auch die DLL als referenz einfügen.

Ich habe in meinen Projekten teilweise 30 DLL's die alle in den verschiedenen
.NET Sprachen geschrieben sind, und das ist alles problemlos untereinander
austauschbar.

Das ist ja gerade eine der stärken des Systems.

Solang sie CLS kompatibel sind 🙂 Es können nämlich nicht alle Sprachen alles ausm .Net Framework.

Baka wa shinanakya naoranai.

Mein XING Profil.

F
10.010 Beiträge seit 2004
vor 18 Jahren

Das ist aber immer nur eine Akademische ausrede, es nicht zu probieren.

99,99999999 % aller sachen funktionieren.