【问题标题】:Visual Studio 2008 Development Server uses C# 2.0 compilerVisual Studio 2008 Development Server 使用 C# 2.0 编译器
【发布时间】:2011-03-25 00:31:03
【问题描述】:

我有一个使用 VS 2008 的测试网站,它只使用代码隐藏文件,例如 Foo.aspx.cs。因此,Web 服务器即时编译它们。我遇到的问题是我无法使用任何 C# 3.0 功能。如果我这样做:

变量 x = 1;

公共类 Foo { 公共 int x {get;set;} }

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

然后 VS 会正常工作(一切都会突出显示并被智能感知),但是当我运行该站点时,它只会引发编译器错误..

有没有办法解决这个问题,或者您是否必须编译一个 DLL 以针对 3.0 运行时?如果是这样,那就太蹩脚了..

迈克

【问题讨论】:

  • 假设网络服务器是 IIS?哪个版本?哪个操作系统?
  • Windows 7.. 而且我没有安装 IIS.. 我只是使用 Visual Studio 2008,它是一个 ASP.NET 项目。

标签: c# asp.net visual-studio-2008 c#-3.0


【解决方案1】:

哦,亲爱的,我明白了!我必须把它放在 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 是从一个非常古老的项目中借来的..

【讨论】:

    【解决方案2】:

    只有 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 吗?如果它在您安装了 studio 2008 的同一台机器上是本地的,那么它应该是。

    因为您需要 C# 3 编译器和 BCL,但 CLR 版本仍然是 2.0。

    所以请提供运行 IIS 的机器上安装的 .net 版本。

    【讨论】:

    • 这台机器肯定安装了 3.5,因为我正在用 3.5 synax(LINQ 和其他东西)编译 DLL。这个错误只发生在 WebDev.exe 编译页面后面的代码时。正如我提到的,IIS没有安装在这台机器上。我正在尝试弄清楚如何让 WebDev.exe 使用 3.0 编译器。
    • 仅供参考,属性页“构建”选项卡中的“目标框架”设置为“.NET Framework 3.5”..
    • 搞清楚了,web.config 中有一个东西告诉 WebDev 使用什么编译器..
    猜你喜欢
    • 2011-03-22
    • 2023-03-06
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多