2014-10-10 1 views
1

У меня проблема с проектом, который ищет несколько версий одной и той же сборки. System.Web.Mvc, например:Устранение нескольких конфликтующих версий System.Web.Mvc при использовании NuGet как источника пакета

enter image description here

Я хочу, чтобы убедиться, что наши проекты MVC никогда не найдет такую ​​устаревшую dll из любого места, за исключением из источников NuGet.

Я понимаю, что не стоит удалять конфликтующие версии из системы, поскольку от них зависит много приложений. Например, это один был найден в C:\Program Files (x86)

Update:

Поскольку мы используем NuGet, я изменил:

Project > Properties > Build > Output > Output path: в C:\Temp\Drop

в каждом проекте (у нас есть некоторый портативную область классные библиотеки), а затем

Project > Properties > Reference Paths и добавлено C:\Temp\Drop

И проблема исчезла.

Будет ли это правильным способом обойти это или я просто открываю еще одну банку на червях здесь?

+0

У вас есть resharper или какой-либо другой подобный плагин? –

+0

GAC используется во время выполнения - он не используется во время проектирования/компиляции визуальной студией. Однако вы получаете ссылку на версию 4.0.0.0, это * не * происходит от GAC. –

+0

Да, я заметил, он смотрел в другое место. Где-то C: \ Program Files (x86) –

ответ

2

Проверьте следующую статью, связанную с сборочный связывания и зондирования, это довольно хорошо:

MSDN - Assembly Probing

Проверить это Article тоже.

Существует полная иерархия, которая используется для поиска сборки, для сильно названных сборок GAC будет первым местом, в вашем случае вы используете сильно названную сборку. Как объяснено в статье, вы должны иметь возможность направить свое приложение на правильную версию сборки во время выполнения

+0

Спасибо, я обязательно посмотрю на эти :) –