С помощью NAnt, Как использовать компилятор C # 3.0, ориентируясь на среду выполнения .NET 2.0? - PullRequest
1 голос
/ 22 апреля 2009

Я использую NAnt 0.85 для создания устаревшего проекта. Сам скрипт использует задачу csc (не задача msbuild) и работает нормально.

Проект находится на пути к миграции на .NET 3.5. Мы уже используем VS2008 и C # 3.0, но все еще ориентируемся на среду выполнения .NET 2.0.

Теперь проблема возникает, когда мы хотим обновить наши сценарии NAnt, чтобы скомпилировать код C # 3.0 с помощью задачи csc.

Мне удалось скомпилировать код C # 3.0 с помощью NAnt, изменив файл nant.exe.config для добавления раздела фреймворка net-3.5, но, тем не менее, я не могу найти способ гарантировать, что результирующие сборки будут выполняться. NET 2.0 время выполнения.

Более проблематично : если я использую LinqBridge для использования Linq без времени выполнения System.Core и .NET 3.5, задача csc завершается неудачно и выдает мне сообщение об ошибке, указывающее, что все связанные с linq вызовы неоднозначны , Фактически, задача NAnt csc, кажется, автоматически ссылается на System.Core.dll, что вызывает конфликт с единственной ссылкой, которую я эффективно добавил в раздел <references>, под задачей csc: LinqBridge.dll.

А теперь как это решить?

1 Ответ

1 голос
/ 22 апреля 2009

Выполнение в .NET 2.0 - это всего лишь пример того, чтобы убедиться, что вы не добавили ссылку на какие-либо библиотеки .NET 3.5. Есть и другие тонкости, когда новые типы (например, DateTimeOffset) были добавлены в .NET 2.0 SP1 в существующих библиотеках, но это другой вопрос.

I подозреваю проблема LinqBridge из-за csc, использующего файл ответов по умолчанию. Возможно, что указав

noconfig="true"

это исправит. В документации говорится, что noconfig «Указывает компилятору не использовать неявные ссылки на сборки», что звучит так, как вы хотите.

...