代码之家  ›  专栏  ›  技术社区  ›  Romain Verdier

对于nant,如何在以.NET 2.0运行时为目标时使用C 3.0编译器?

  •  1
  • Romain Verdier  · 技术社区  · 16 年前

    我正在使用nant 0.85构建一个遗留项目。脚本本身使用 csc 任务 (不是) msbuild 任务)并且工作正常。

    该项目正在通过.NET 3.5迁移。我们已经使用了VS2008和C 3.0,但仍然以.NET 2.0框架运行时为目标。

    现在,当我们想要升级我们的NANT脚本,使用CSC任务编译C 3.0代码时,问题就出现了。

    我通过修改nant.exe.config来添加net-3.5框架部分,成功地用nant编译了c 3.0代码,但我仍然找不到一种方法来确保生成的程序集将在.NET 2.0运行时上执行。

    更多的问题 :如果我使用LinqBridge在没有System.Core和.NET 3.5运行时的情况下利用Linq,CSC任务将失败,并给我一条错误消息,指示所有与Linq相关的调用都不明确。实际上,nant csc任务似乎自动引用 System.Core.dll ,这导致与我有效添加到 <references> CSC任务下的部分: LinqBridge.dll .

    你现在怎么解决这个问题?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Jon Skeet    16 年前

    在.NET 2.0上执行通常只是确保不添加对任何.NET 3.5特定库的引用。在新类型(例如 DateTimeOffset )已在现有库中添加到.NET 2.0 SP1,但这是另一回事。

    犯罪嫌疑人 LinqBridge问题是由于 csc 使用默认响应文件。有可能指定

    noconfig="true"
    

    会解决这个问题。文件规定: noconfig “指示编译器不要使用对程序集的隐式引用”,这听起来像是您想要的。