В качестве альтернативы предлагаемому решению, во время разработки вы можете привязать к любой сборке, которую хотите, полностью перекрывая GAC, установив DEVPATH
переменную среды и включив Режим разработки в machine.config
. Я думаю, что это, безусловно, самый простой способ добиться того, чего вы хотите, но его не следует использовать в производстве.
Это решает проблему, когда версия вашей сборки и версия в GAC совпадают, если версии разные, вы должны использовать подход bindingRedirect
, упомянутый здесь несколькими пользователями.
Сначала добавьте следующее к machine.config
:
<configuration>
<runtime>
<developmentMode developerInstallation="true"/>
</runtime>
</configuration>
Затем установите переменную среды DEVPATH
для местоположения ваших неподписанных сборок. Это заставит режим Fusion DEVOVERRIDE активировать и искать DEVPATH
(и его подкаталоги) до проверки GAC.
Часто задаваемые вопросы DEVPATH
и DEVOVERRIDE
на MSDN ответят на большинство вопросов о влиянии использования этого.
Fusion (загрузчик сборок .NET) будет искать только по имени и версии, он будет обрабатывать строго именованные сборки так же, как другие сборки, не будет искать GAC перед поиском DEVPATH
и просто возвращает первое найденное совпадение. Вы должны использовать Fusion Log Viewer (fuslogvw) , чтобы убедиться, что вы правильно его включили, , как описано в этом сообщении в блоге DEVPATH
.
Впервые в использовании FusLogVw? Скотт Хансельман написал превосходное вступление . Интерфейс Viewer довольно архаичен и требует некоторого привыкания.
Обратите внимание, что средство просмотра журнала Fusion (или средство просмотра журнала привязки сборки, как указано в названии) смущает, что вы использовали переменную среды DEVOVERRIDE
. Это должно выглядеть примерно так:
LOG: Found assembly in DEVOVERRIDE path D:\testassemblies\Test.DLL
ПРИМЕЧАНИЕ: если вы хотите, чтобы Visual Studio загружала сборки из местоположения DEVPATH
, вам следует установить ключ реестра в это местоположение , т. Е. Установить (проверьте, соответствует ли ключ версии .NET вашему Версия .NET):
[HKEY_CURRENT_USER\
SOFTWARE\
Microsoft\
.NETFramework\
v2.0.50727\AssemblyFoldersEx\
DEVPATH]@="C:\SharedAssemblies"