My .Net Framework Приложение WinForms создается без ошибок и работает без ошибок.
Сбой конструктора VS2017 Professional 15.9.2, когда я дважды щелкаю, чтобы открыть созданные мной элементы управления.Все эти пользовательские элементы управления наследуются от класса с именем MyUserControl.Я могу открыть MyUserControl в конструкторе без ошибки.
Когда я запускаю только VS2017 (без второй копии с подключенным отладчиком), я вижу следующее исключение, когда дважды щелкаю целевой пользовательский элемент управления:
«Не удалось загрузить файл или сборку» MyEventArgs, версия = 1.0.6896.23135, культура = нейтральная, PublicKeyToken = null 'или одна из ее зависимостей.Системе не удается найти указанный файл. '
Целевой пользовательский элемент управления не ссылается на MyEventArgs.Добавление ссылки в целевой проект в MyEventArgs не помогает.Все ссылки на MyEventArgs в решении - это ссылки на DLL в папке Libraries, а не ссылки на проекты.
Я открыл каждый из файлов .csproj в решении в Блокноте.Ни один из них не ссылается на конкретную версию библиотеки MyEventArgs.
Я очистил все каталоги obj и bin.
Я очистил каталог ProjectAssemblies.Это приложение WinForms, поэтому нет необходимости очищать каталог временных файлов ASP.Net.
Я запустил вторую копию VS2017 и подключил отладчик к экземпляру VS2017, где я пытаюсь открыть пользовательский элемент управления вдизайнер.Я установил родительский флажок, чтобы выбрать разбиение на все исключения CLR.
Я дважды щелкаю, чтобы открыть целевой пользовательский элемент управления в конструкторе VS первого экземпляра VS.
Сначала я получаюисключение
Параметр неверен.(Исключение из HRESULT: 0x80070057 (E_INVALIDARG))
без информации о том, какой параметр неверен.Я посмотрел во всех свойствах объекта исключения.Ни в одной из моих библиотек DLL не установлен бит «загружен из Internt».
Я нажимаю «Продолжить» в отладчике и получаю это исключение
«Не удалось загрузить файл или сборку» MyEventArgs, Версия = 1.0.6896.23135, Культура = нейтральная, PublicKeyToken = null 'или одна из ее зависимостей.Системе не удается найти указанный файл. '
=== Информация о состоянии предварительной привязки === LOG: DisplayName = MyEventArgs, версия = 1.0.6896.23135, Culture = нейтральный, PublicKeyToken = null (полностью указан)LOG: Appbase = file: /// C: / Program Files (x86) / Microsoft Visual Studio / 2017 / Professional / Common7 / IDE / LOG: Initial PrivatePath = NULL Вызывающая сборка: (неизвестно).=== LOG: эта привязка начинается в контексте загрузки по умолчанию.LOG: Использование файла конфигурации приложения: C: \ Users \ Adam \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_fdc9bc52 \ devenv.exe.config LOG: Использование файла конфигурации хоста: LOG: Использование файла конфигурации компьютера из C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config.LOG: Политика, не применяемая в настоящее время для ссылки (частная, пользовательская, частичная или привязка сборки на основе местоположения).LOG: та же самая привязка была замечена ранее, и она была неудачной с hr = 0x80070002.
Однако у меня нет этой версии MyEvents где-либо еще.Все ссылки на DLL в папке библиотеки.Эта DLL имеет более новую версию.
Как заставить VS2017 перестать искать эту старую версию DLL?
Я запустил две копии AstroGrep (бесплатная утилита Windows), чтобы найти этуномер версии (1.0.6896.23135) во всех файлах на диске C, а также на диске D, на котором хранится решение.Не найдено ни одного экземпляра этого номера версии ни в одном файле (csproj и т. Д.).
Целевой проект управления пользователями не ссылается на MyEventArgs.Я проверил каждый csproj в решении.Все ссылки на копию MyEventArgs.dll в папке библиотеки.Эта копия имеет более новую версию, чем та, которая названа в исключении.
MyEventArgs отсутствует в GAC на целевом компьютере.
Откуда VS получает этот старый номер версии?Если бы я знал, где VS читает этот номер версии, я мог бы очистить его или изменить.Он не мог составить этот номер, но я не могу найти, где он хранится.