2010-08-04 7 views
1

J'ai un site Web de test avec VS 2008 qui utilise uniquement du code derrière les fichiers, tels que Foo.aspx.cs. Ainsi, le serveur web les compile à la volée. Le problème que je rencontre est que je ne peux pas utiliser les fonctionnalités C# 3.0. Si oui:Visual Studio 2008 Development Server utilise le compilateur C# 2.0

var x = 1;

ou

public class Foo { public int x {get; ensemble;}}

ou

Foo x = new Foo() {x = 5};

Ensuite, VS fonctionnera bien (tout est mis en surbrillance et Intellisensed), mais quand je lance le site juste vomit des erreurs du compilateur ..

est-il un moyen de résoudre ce problème, ou avez-vous devez compiler DLL pour cibler l'exécution 3.0? Si oui c'est incroyablement boiteux ..

Mike

+0

En supposant que le serveur Web est IIS? Quelle version? Quel système d'exploitation? – spender

+0

Windows 7 .. Et je n'ai pas installé IIS .. Je n'utilise que Visual Studio 2008 et c'est un projet ASP.NET. –

Répondre

0

Oh ma douce, je l'ai compris! J'ai dû mettre cela dans le web.config ..

<system.codedom> 
     <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" 
        type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
      <providerOption name="CompilerVersion" value="v3.5"/> 
      <providerOption name="WarnAsError" value="false"/> 
     </compiler> 
     <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" 
        type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
      <providerOption name="CompilerVersion" value="v3.5"/> 
      <providerOption name="OptionInfer" value="true"/> 
      <providerOption name="WarnAsError" value="false"/> 
     </compiler> 
     </compilers> 
    </system.codedom> 

Je pense que cela est parce que mon web.config a été emprunté à un très vieux projet ..

1

Il y a seulement le moteur d'exécution 2.0, il n'y a pas d'exécution 3.0 ou 3.5. Ce ne sont que des bibliothèques supplémentaires et je crois qu'un compilateur C# différent.

Voir http://www.novolocus.com/2008/01/11/net-framework-versions-language-versions-and-clr-versions-all-a-bit-fraught/

Etes-vous sûr de la machine que vous êtes a 3.0 ou 3.5 installé? Si c'est local sur la même machine que celle que vous avez en studio en 2008, ça devrait l'être. Parce que vous avez besoin du compilateur C# 3 et de la BCL, la version CLR sera toujours 2.0.

Veuillez donc indiquer les versions .net installées sur l'ordinateur sur lequel IIS est exécuté.

+0

La machine a certainement 3.5 installé parce que je compile DLL avec 3.5 synax (LINQ et d'autres choses) .. Cette erreur se produit uniquement lorsque WebDev.exe compile un code derrière la page .. Comme je l'ai mentionné, IIS n'est pas installé sur cette machine. J'essaie de comprendre comment faire WebDev.exe utiliser le compilateur 3.0. –

+0

FYI, le "Target Framework" dans les pages de propriétés "Construire" onglet est mis à ".NET Framework 3.5" .. –

+0

Got it deviné, il y a une chose dans le web.config qui dit à WebDev quel compilateur à utiliser .. –

Questions connexes