Visual Studio 2008 Development Server использует компилятор C # 2.0 - PullRequest
1 голос
/ 04 августа 2010

У меня есть тестовый веб-сайт с VS 2008, который просто использует код позади файлов, таких как Foo.aspx.cs. Таким образом, веб-сервер компилирует их на лету. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу использовать любые функции C # 3.0. Если я сделаю:

var x = 1;

или

публичный класс Foo { public int x {get; set;} }

или

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

Тогда VS будет работать нормально (все подсвечивается и Intellisensed), но когда я запускаю сайт, он просто выдает ошибки компилятора ..

Есть ли способ исправить это, или вам нужно скомпилировать DLL для целевой среды выполнения 3.0? Если это так, то это безумно хромает ..

Mike

Ответы [ 2 ]

1 голос
/ 04 августа 2010

Существует только среда выполнения 2.0, нет среды исполнения 3.0 или 3.5. Это просто дополнительные библиотеки, и я считаю, что это другой компилятор C #.

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

Вы уверены, что на вашем компьютере установлено 3.0 или 3.5? Если это локально для той же машины, на которой установлена ​​студия 2008, то это должно произойти.

Поскольку вам нужен компилятор C # 3 и BCL, но версия CLR все равно будет 2.0.

Итак, укажите версии .net, установленные на компьютере, на котором работает IIS.

0 голосов
/ 04 августа 2010

О, сладкий, я понял это! Я должен был поместить это в 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>

Я думаю, это потому, что мой web.config был заимствован из очень старого проекта ..

...