LinqBridge Breaks Razor Views: ограничение вывода файлов на основе версии .NET - PullRequest
1 голос
/ 29 августа 2011

Наш проект использует несколько пакетов NuGet, некоторые из которых ссылаются на LinqBridge, библиотеку, которая повторно реализует LINQ to Objects для C # 2.0.Файл LinqBridge.dll находится в каталоге /packages/PackageName/lib/20/LinqBridge.dll, поэтому очевидно, что он должен применяться только к .NET 2.0.

Проблема в том, что, хотя каждый проект вРешение настроено на сборку в .NET 4.0, двоичный файл LinqBridge.dll копируется в каталог final / bin и наносит ущерб представлениям Razor.Если я выполняю .Select () для IEnumerable, между встроенным вызовом LINQ и повторно реализованным, который предоставляет LinqBridge, возникает неоднозначный вызов.

Я явно не нуждаюсь в повторно реализованной версии;если я просто удаляю LinqBridge.dll из каталога output / bin, все работает нормально.Однако это не является приемлемым постоянным решением.

Есть ли способ настроить что-либо, чтобы прекратить копирование этого файла (для старой версии .NET) в вывод / bin?

Редактировать : Я приклеил решение, приклеив его к ленте, добавив его в «Командную строку события после сборки:» в разделе «События сборки» в свойствах моего решения:

del $(SolutionDir)\bin\LinqBridge.dll

Это все еще далеко от идеала, но, по крайней мере, пока позволяет моему проекту работать.

Ответы [ 2 ]

1 голос
/ 11 сентября 2011

NuGet имеет поддержку различных двоичных файлов для разных версий .NET , поэтому я хотел бы предположить, что пакеты, которые вы используете, собраны неправильно.

Я бы связался с авторами пакетов и посмотрелесли они могут исправить их таким образом, чтобы LinqBridge включал только версии net11 или net20.

Поддержка нескольких версий и профилей .NET Framework

Многие библиотеки ориентированы на конкретную версию .NET Framework,Например, у вас может быть одна версия вашей библиотеки, относящаяся к Silverlight, и другая версия той же библиотеки, которая использует преимущества .NET Framework 4.Вам не нужно создавать отдельные пакеты для каждой из этих версий.NuGet поддерживает размещение нескольких версий одной и той же библиотеки в одном пакете, сохраняя их в отдельных папках внутри пакета. (подробнее ...)

0 голосов
/ 10 октября 2014

Полезный подход, который мы нашли, заключался в использовании LinqBridge.Embedded Nuget вместо стандартного пакета LinqBridge.Это встраивает Linqbridge как файл C # в ваш проект и, следовательно, не копируется в папку bin и не загружается в контекст представления Razor.

Это было полезно для нас, потому что сборка, на которую мы ссылаемся, все еще нуждаетсябыть встроенным в .Net 2.0, так как на него также ссылается приложение 2.0.Следовательно, эта сборка использует LinqBridge.Embedded, и сборка LinqBridge не попадает в папки bin наших серверов 4.0.

...