使用 NAnt,如何在针对 .NET 2.0 运行时时使用 C# 3.0 编译器?

发布于 2024-07-18 07:54:17 字数 674 浏览 5 评论 0原文

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

该项目正在迁移到 .NET 3.5。 我们已经使用 VS2008 和 C# 3.0,同时仍然针对 .NET 2.0 框架运行时。

现在,当我们想要升级 NAnt 脚本,使用 csc 任务编译 C#3.0 代码时,就会出现问题。

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

问题较多:如果我使用 LinqBridge 在没有 System.Core 和 .NET 3.5 运行时的情况下利用 Linq,则 csc 任务会失败并给出一条错误消息,指示所有与 linq 相关的调用都是不明确的。 事实上,NAnt csc 任务似乎自动引用 System.Core.dll,这会导致与我有效添加到 部分中的唯一引用发生冲突,位于csc 任务:LinqBridge.dll

现在你知道如何解决吗?

I'm using NAnt 0.85 to build a legacy project. The script itself uses the csc task (not the msbuild task) and works fine.

The project is on its way to migrating over .NET 3.5. We already use VS2008, and C# 3.0, while still targeting .NET 2.0 framework runtime.

Now the problem occurs when we want to upgrade our NAnt scripts, to compile C#3.0 code using csc task.

I managed to compile C#3.0 code with NAnt, by modifying the nant.exe.config to add the net-3.5 framework section, but still, I can't figure a way to ensure that resulting assemblies will execute on .NET 2.0 runtime.

More problematic : if I'm using LinqBridge to leverage Linq without System.Core and .NET 3.5 runtime, the csc task fails and gave me an error message indicating that all linq-related calls are ambiguous. In fact, NAnt csc task seems to automatically reference System.Core.dll, which causes a conflict with the only reference I effectively added to the <references> section, under the csc task: LinqBridge.dll.

Do you now how to solve that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一绘本一梦想 2024-07-25 07:54:17

在 .NET 2.0 上执行主要只是确保不添加对任何 .NET 3.5 特定库的引用。 在现有库的 .NET 2.0 SP1 中添加新类型(例如 DateTimeOffset)还存在其他微妙之处,但这是另一回事。

怀疑 LinqBridge 问题是由于 csc 使用默认响应文件造成的。 指定可能

noconfig="true"

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

Executing on .NET 2.0 is mostly just a case of making sure you don't add a reference to any .NET 3.5-specific libraries. There are other subtleties where new types (e.g. DateTimeOffset) have been added to .NET 2.0 SP1 in existing libraries, but that's a different matter.

I suspect the LinqBridge problem is due to csc using the default response file. It's possible that specifying

noconfig="true"

will fix this. The documentation states that noconfig "Instructs the compiler not to use implicit references to assemblies" which sounds like what you want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文