2017-07-10 23 views
0

Ich habe erfolgreich eine Klasse von VB zu C# zugreifen, wenn ich die VB-Dateien in einen Ordner legen und diese Zeile von Codes schreiben web.configMischen C# und VB.Net in ASP.Net Ordner App_Code

<compilation> 
 
    <codeSubDirectories> 
 
    <add directoryName="VB" /> 
 
    <add directoryName="CSharp" /> 
 
    </codeSubDirectories> 
 
</compilation>

Jetzt aus irgendeinem Grund, ich will nicht die VB-Dateien in ein Unterverzeichnis setzen und es einfach so zu App_Code, setzen.

Aber ich habe einen Fehler, wenn ich versuche, die Klasse von VB zu C# zuzugreifen. Hier.

enter image description here

Meine Frage ist, ist es möglich, die Klasse von VB zu C# zuzugreifen, ohne dass die VB-Dateien in ein Unterverzeichnis zu setzen? Was muss ich zu web.config hinzufügen, um sie miteinander zu verbinden? Vielen Dank.

+0

Versuche Referenz verwendet zu 'App_Code' Namensraum, beispielsweise 'using Website.App_Code', dann können Sie' App' Klasse verwenden. Wenn es immer noch nicht funktioniert, setzen Sie die Build-Aktion für VB-Dateien im 'App_Code'-Verzeichnis auf' Compile'. –

+0

@TetsuyaYamamoto Eigentlich habe ich das auch schon probiert und kann immer noch nicht. Nur eine Fehlermeldung _namespace konnte nicht gefunden werden_. Mit dem Setzen einer Build-Aktion meinst du damit? [https://stackoverflow.com/questions/6498245/how-to-set-build-action-on-a-file-advanced-properties-not-displayed-in-propert] – Rich

+0

Sie haben Recht, das ist, wo die Die Option "Kompilieren" sollte auf alle VB-Code-Dateien im Verzeichnis App_Code ** ** ** gesetzt werden, bevor versucht wird, die App-Klasse mit ihrem Namespace zu referenzieren ('using Website.App_Code'). Geben Sie einen Schuss und sehen Sie, ob es richtig funktioniert. –

Antwort

0

allererste rechtse Maustaste auf jede VB-Code-Datei und navigieren diese Fenster „Eigenschaften“ sehen Eigenschaften der einzelnen Datei, dann sicherstellen, dass alle von ihnen haben bereits Build Action Set Compile Modus so wie:

Build Action Compile

Wenn Sie VB.NET-Code-Dateien von einem anderen Ort zu App_Code Verzeichnis kopiert sind oder mit einem beliebigen anderen Namespace (s) gefunden, vergessen Sie nicht richtig ihre aktuellen Namensraum zu setzen:

Namespace Website.App_Code 
    Module App 
     ... 
     ' App class contents here 

     ... 
    End Module 
End Namespace 

Dann können Sie Website.App_Code.App Klasse verwenden, seinen Namensraum durch Referenzierung:

using Website.App_Code; 

public class Practice 
{ 
    public static string AttachmentDirectory => App.Attachment; 
} 

Beachten Sie, dass App Klasse als public Umfang eingestellt werden muss, so dass es von allen Instanzen in Ihrem Projekt zugegriffen werden kann.

Anm .: Die Eigenschaft AttachmentDirectory scheint mit expression-bodied member syntax zugewiesen zu werden, die für Version 6.0 oder höher anwendbar ist. Überprüfen Sie, ob die derzeit verwendete Compiler-Version diese Syntax verwendet.

ähnliche Probleme:

Classes residing in App_Code is not accessible

How to call a class in the App_Code folder from code behind?

+0

Ich kenne das Problem nicht, aber es gibt kein "Eigenschaften" -Element im Menü, wenn ich mit der rechten Maustaste auf eine VB-Datei klicke. – Rich

+0

Übrigens benutze ich ASP.net Webformulare, nicht ASP.net MVC. Darf ich die Version Ihres VS kennen? – Rich

+0

Derzeit verwende ich VS 2013 & 2015, und das Kontextmenü Eigenschaften für beide Editionen noch vorhanden. Wenn Sie Eigenschaften aus dem Kontextmenü nicht verwenden können, verwenden Sie Ansicht => Eigenschaftenfenster, um das Fenster anzuzeigen und klicken Sie einfach auf VB-Datei, deren Eigenschaften angezeigt werden sollen. –

Verwandte Themen