Le projet Fresh VS2017 Web Site a un Default.aspx défini de cette façon.Deux fichiers codebehind pour un aspx, un VB et un C#
<%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
J'ai fourni avec un fichier Default.aspx.vb comme ceci:
Partial Public Class _Default : Inherits Page
Public Function Teapot() As Boolean
Return True
End Function
End Class
et un fichier Default.aspx.cs comme ceci:
public partial class _Default : System.Web.UI.Page
{
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e); // There is a breakpoint on this line
Teapot(); // Error: The name 'Teapot' does not exist
in the current context
}
}
Le site web fonctionne, malgré l'erreur de temps de conception concernant l'utilisation de Teapot(), et le point d'arrêt est marqué comme The breakpoint will not currently be hit.
C'est comme si le contenu du fichier C# n'était pas inclus dans le projet malgré l'utilisation d'une classe partielle et l'inclusion des éléments suivants dans le web.config:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers></system.codedom>
Comment puis-je obtenir le contenu des deux C# et VB fichiers inclus dans la classe de page _Default
?
Vous ne pouvez pas combiner les classes partielles C# et VB - elles utilisent des compilateurs différents. – Dai
Je sais, mais depuis qu'ils se sont tous deux compilés à MSIL, j'ai pensé que peut-être ils pourraient être rejoints à ce stade. – davecove
Ok, en utilisant les deux sous-dossiers de App_Code comme décrit dans l'article que Ujjwal a pointé dans la réponse acceptée, vous pouvez écrire une classe dans une langue qui peut être appelée depuis la classe _Default écrite dans l'autre langue (tous dans le même projet web). Pas la même chose qu'une classe partielle dans deux langues, mais assez proche. – davecove