System io filenotfoundexception файл не найден

Обновлено: 07.07.2024

Вы можете использовать FusLogVw , чтобы узнать, кто загружается старые сборки, просто определите путь для журнала и запустите свое решение, затем проверьте (в FusLogvw) первую строку, где загружена сборка Unity, дважды щелкните ее и посмотрите на вызывающую сборку, и здесь вы идете.

Чтобы избежать необходимости находить файл журнала, вы можете указать собственный путь к журналу: «Настройки», установите флажок «Включить настраиваемый путь к журналу», введите собственный путь к журналу и обновите его. – RedGreenCode 21 January 2015 в 20:46

, если это не работает, пожалуйста, не злоупотребляйте мной. я также младший

Попробуйте очистить папки Debug и Release в вашем решении. Затем удалите и снова добавьте единство.

Эта проблема может быть вызвана множеством вещей . ваше решение решило мои проблемы и могло бы решить и другие. – Scott Rippey 29 September 2011 в 02:19 @ScottRippey Это сработало для меня. Сначала я удалил все файлы .pdb, а затем перезагрузил мой проект и перестроил его. – botenvouwer 12 February 2014 в 10:26
  • Перейти к: Решение -> Пакет
  • Нажмите вкладку «Дополнительно» (найдите ниже страницы)
  • Добавьте вашу dll в дополнительные сборки (таким образом мы можем добавить внешние DLL в sharepoint).
У меня нет «Solution - & gt; Пакет & quot; в моем проекте VS2010 – Muflix 1 July 2015 в 14:11

Эта проблема произошла со мной, когда одна из моих зависимых библиотек составляла DLL с «Any CPU», когда родительская библиотека ожидала компиляцию «x64».

В редакторе решений щелкните правой кнопкой мыши по проекту (а не по решению), на вкладке сборки выберите Платформа цели: «Любой процессор».

У меня было это сегодня, и в моем случае проблема была очень странной:

Обратите внимание на блуждающих символов в конце XML - так или иначе они были перенесены с номера версии на конец этого блока XML!

Изменен и выше, и вуаля! Все снова работало.

Вы должны удалить файл appname.dll из выходной папки. Отладка и удаление папок. Перестроить и скопировать в файл регенерированной DLL-файл.

На 99% Не удалось загрузить файл или сборку или одна из проблем с зависимостями вызвана зависимостями! Я предлагаю вам выполнить следующие действия:

Dependency walker замечательный, но копирование случайных DLL из Интернета в Windows - это . менее здорово. Лучше попытаться найти установщика, который предоставляет эти DLL. – RJFalconer 13 October 2016 в 12:34 Я получил несколько файлов ( API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL ), которые не были найдены, и привели меня к этому вопросу stackoverflow . В основном имейте в виду, можно посмотреть на ложные положительные для некоторых файлов, ссылка обеспечивает более подробную информацию. – cheriejw 15 May 2018 в 01:00

У меня была аналогичная проблема. ** Ответ Juntos правильный **, но вы должны отметить один важный совет!

Для единства 2.1.505.2 указаны различные AssemblyVersion и AssemblyFileVersion:

enter image description here

[/g1]

AssemblyFileVersion используется nuget, но CLR не заботится об этом! CLR будет использовать только AssemblyVersion!

Поэтому перенаправления должны применяться к версии, указанной в AssemblyVersion: 2.1.505.0

Проверьте файл Web.config / App.config в своем проекте. Посмотрите, верны ли номера версий.

Это сработало для меня.

Это сработало для меня, хотя это был web.config, а не app.config – samneric 12 January 2018 в 03:50

Вы говорите, что у вас много проектов в вашем решении . ну, начните с одного в верхней части порядка сборки. Получите это, чтобы построить, и как только вы это выясните, вы можете применить одно и то же исправление к остальным.

Честно говоря, вам, вероятно, просто нужно обновить свою ссылку. Похоже, что вы либо обновили свою версию, либо не обновили ссылки, либо это относительный путь, если вы держите свое решение в контроле источника. Просто подтвердите свои предположения и снова добавьте ссылку.

. Кроме того, вам может потребоваться просто обновить корпоративную библиотеку до последней версии.

Откройте диспетчер IIS

Выберите пулы приложений

, затем выберите пул, который вы используете

перейдите к дополнительным настройкам (с правой стороны)

Измените флаг Включить 32-битное приложение false на true.

Вы также можете щелкнуть правой кнопкой мыши свой проект в VS. и удалите предпочтительную 32-битную галочку – eran otzap 12 October 2014 в 07:57 Благодарю. Это сработало. Ну, это было уже правда в моем случае, просто для попытки. Я сделал это ложно, и это сработало. – meekash55 27 January 2017 в 11:10

Несмотря на то, что исходный вопрос был опубликован 5 лет назад, проблема все еще сохраняется и довольно раздражает.

Не работает с версиями сообщества Visual Studio – Draex_ 8 September 2017 в 18:29 Я считаю, что должна быть другая проблема, не связанная с выпуском Visual Studio. Я тестировал расширение на VS 2017 и VS 2015 Community. Фактически он был разработан с помощью версии VS 2017 Community. – marss 9 September 2017 в 19:22 В редакторе сообщества нет инструментов архитектуры, но сам редактор DGML доступен. Вы можете установить его, выбрав «Установить редактор DGML». под "Индивидуальные компоненты" - & GT; «Инструменты кода» через установщик Visual Studio - & gt; изменять – marss 16 October 2017 в 18:37

Другая возможная причина: убедитесь, что вы случайно не дали обоим проектам одно и то же имя сборки в свойствах проекта.

Вот что сработало для меня:

  1. Удалить ссылку
  2. Переименовать DLL
  3. Импортировать ссылку снова

Второй шаг был важен, по-видимому, так как он не работал без него.

I «Задать в качестве стартового проекта» разгруженную / необоснованную библиотеку / проект.

Затем развернул ее.

Я думаю, 't нашел .dll, потому что он не был в сборке сначала.

После работы для меня.

Хорошо, это может показаться очень глупым, но вот как я решил проблему, попробовав все другие решения и проведя ночь на эту глупость.

Я получал ту же ошибку с некоторой DLL, отсутствующей в Bin Folder. Я попытался удалить, восстановить все из Team Foundation Server, но не работал. Получил копию папки Bin с моей офис-мателокальной машины и заменил ее. Это тоже не сработало. Наконец, я вручную перешел на FTP-сервер, получил копию DLL, которая отображалась как отсутствующая, и затем она начала показывать, что следующий файл в последовательности списка файлов отсутствует.

Итак, я ftped server Получил все Bin Folder, вручную заменил каждый файл по одному. (Не Ctrl + All и заменить .. Я пробовал: он не работал.) И как-то это сработало .

Симптомы

Причина

Вы можете получить ошибку, если одно из следующих условий является верным:

Рабочий процесс не имеет разрешений на чтение в каталог Temp процесса, а рабочий процесс не имеет разрешений для записи в каталог Temp процесса.

Класс XmlSerializer создает и компилирует код на лету для выполнения сериализации и десериализации. XmlSerializer Для выполнения компиляции используется объектная модель документов кода (CodeDom). Компиляция CodeDom использует временные файлы на диске. Если рабочий процесс не имеет разрешений на чтение в каталоге Temp и разрешений на записи в каталоге Temp, все вызовы в веб-службу сбой. Поэтому для рабочего процесса требуются разрешения на чтение в каталоге Temp и разрешения на записи в каталоге Temp.

В коде, который создается, имеются ошибки XmlSerializer компиляции.

Разрешение 1. Назначение разрешений учетной записи рабочего процесса в каталоге Temp

Если используется обезличенный пользователь, он должен иметь полный доступ в каталоге Temp.

Чтобы назначить необходимые разрешения учетной записи рабочего процесса в каталоге Temp, выполните следующие действия:

В Windows Explorer найдите %windir%\temp directory .

Щелкните правой %windir%\temp кнопкой мыши и выберите свойства.

В окне Свойства выберите вкладку Security.

Выберите Добавить, введите ServerName\ASPNET, а затем выберите ОК.

Замените ServerName именем веб-сервера.

Замените ASPNET службой NETWORK, если вы развернули приложение на IIS 6.0.

В статье Разрешить выберите поле полный контроль, а затем выберите ОК.

Разрешение 2. Найдите ошибки компиляторов в коде, который создан XmlSerializer

Чтобы найти ошибки, созданные компилятором, необходимо добавитьWeb.configфайл, чтобы сохранить файлы, созданные компилятором. Для этого выполните следующие действия:

Откройте файл Web.config в текстовом редакторе, например Блокнот.

Запустите клиентскую заявку.

Клиентская служба вызывает веб-службу.

Убедитесь, что в каталоге %windir%\temp _tmpname.00.cs и _tmpname.out.

Файл _tmpname.00.cs — это созданный источник. Файл _tmpname.out должен иметь ошибки компиляторов.

Включить разрешения на чтение и включить разрешения на запись учетной записи рабочего процесса (ASPNET или NETWORK SERVICE) для записи файлов в %tmpname% каталоге Temp.

Статус

Такое поведение является особенностью данного продукта.

Действия по воспроизведению поведения

В следующих разделах приводится информация о действиях по воспроизведению поведения.

Создание веб-службы

По умолчанию создается Service1.asmx.

Назови проект WebServiceTemp.

В обозревателе решений щелкните правой кнопкой мыши Service1.asmx и выберите Код представления.

В меню Построение выберите команду Построить решение.

Создание клиентского веб-приложения

Назови проект WebAppTemp.

В Обозревателе решений щелкните правой кнопкой мыши Ссылки, а затем выберите Добавить веб-ссылку.

Выберите Перейти, а затем выберите Добавить ссылку.

Дважды щелкните WebForm1, чтобы открыть Page_Load код события.

Придать обработнику событий следующий Page_Load код.

В меню Построение выберите команду Построить решение.

Настройка разрешений в каталоге Temp

Чтобы назначить необходимые разрешения учетной записи рабочего процесса в каталоге Temp, выполните следующие действия:

В Windows Explorer найдите %windir% каталог.

Щелкните правой %windir%\temp кнопкой мыши и выберите свойства.

В окне Свойства выберите вкладку Security.

Выберите Добавить, введите ServerName\ASPNET, а затем выберите ОК.

Убедитесь, что поле Write не выбрано в статье Разрешить, а затем выберите ОК.

Я ненавижу указывать на очевидное, но System.IO.FileNotFoundException означает, что программа не нашла указанный вами файл. Итак, что вам нужно сделать, это проверить, какой файл ищет ваш код на производстве.

Чтобы посмотреть, какой файл ищет ваша программа на производстве (посмотрите на свойство FileName исключения), попробуйте следующие методы:

  • записывать в журнал отладки,
  • использовать приложение Visual Studio для процесса или
  • использование удаленной отладки Visual Studio

Затем посмотрите файловую систему на компьютере и посмотрите, существует ли файл. Скорее всего, дело в том, что его не существует.

Я столкнулся с подобной ситуацией после публикации приложения ClickOnce, и один из моих коллег из другого домена сообщил, что он не запускается.

Затем мой коллега сообщил мне подробности об исключении, и это была недостающая ссылка на файл dll сторонней структуры.

Добавлена ??ссылка и проблема решена.

Я ошибался этой ошибкой несколько раз. После того, как вы потратили часы на поиск в Google, обновление пакетов nuget, проверку версий, а затем после сидения с полностью обновленным решением, я переосмыслил совершенно правильную, более простую причину ошибки.

Если в поточном enthronement (например, UI Dispatcher.Invoke), System.IO.FileNotFoundException выдается, если dll (файл) диспетчера потоков не возвращается. Итак, если ваш основной поток пользовательского интерфейса A вызывает диспетчер потоков DL, а B вызывает ваш код потока C, но C бросает какую-то несвязанную причину (например, null Reference, как в моем случае), то C не возвращается, B делает не возвращаются, а A только обвиняет B с FileNotFoundException в том, что он потерялся .

Перед тем, как спуститься по пути версии dll . Проверьте ближе к дому и убедитесь, что ваш код потока не метался.

Внимательно проверьте все ссылки

  • Версия остается такой же на целевой машине и на локальной машине
  • Если на сборку ссылаются GAC, убедитесь, что загружена правильная версия

Для меня очистка всего решения путем удаления вручную, обновление (удаление и добавление) ссылок снова с синхронизированной версией с целевой машиной, а затем создание с помощью функции «Копировать локальное»> «Ложь для сборки GAC» решает проблему.

Я открыл и построил другой проект в Visual Studio, а затем снова открыл проект с этой ошибкой. Я его построил и решил.

поэтому я застрял на этом некоторое время. В принципе, у меня есть файл, созданный под названием "Слово.txt " и всякий раз, когда я запускаю программу, она дает мне эту ошибку:

по иронии судьбы, я создал файл " word.txt" в том же каталоге, что и мой java-файл, и все же он все еще дает мне эту ошибку.

вставить слово.txt непосредственно в качестве дочернего элемента корневой папки проекта и однорангового узла src

отказ от ответственности: я хотел бы объяснить, почему это работает в данном конкретном случае и почему это может не работать для других.

почему это работает:

при использовании File или любой другой FileXxx варианты, вы ищете файл в файловой системе относительно "рабочий каталог". Работа каталог, можно описать следующим образом:

при запуске из командной строки

C:\EclipseWorkspace\ProjectRoot\bin > java com.mypackage.Hangman1

рабочий каталог-это C:\EclipseWorkspace\ProjectRoot\bin . С вашей IDE (по крайней мере все те, с которыми я работал), рабочий каталог-это ProjectRoot . Поэтому, когда файл находится в ProjectRoot , а затем использовать только имя файла в качестве относительного пути допустимо, потому что он находится в корне рабочего каталога.

аналогично, если это был ваш проект структура ProjectRoot\src\word.txt , тогда путь "src/word.txt" будет действительным.

почему это может не сработать

во-первых, рабочий каталог всегда может измениться. Например, при запуске кода из командной строки, как в приведенном выше примере, рабочим каталогом является bin . Так что в этом случае он потерпит неудачу, так как нет bin\word.txt

во-вторых, если вы должны были экспортировать этот проект в jar, и файл был настроен для включения в jar, он также потерпит неудачу, так как путь больше не будет действительным.

это, как говорится, вам нужно определить, должен ли файл быть встроенный-ресурс (или просто "ресурс" - термины, которые иногда я буду использовать как синонимы). Если это так, то вы захотите создать файл в пути к классам и получить к нему доступ через URL-адрес. Первое, что вам нужно будет сделать (в данном конкретном случае), это убедиться, что файл get построен в classpath. С файлом в корень проекта, вы должны настроить сборку для включения файла. но если вы поместите файл в src или в некотором каталоге ниже, тогда сборка по умолчанию должна поместить ее в путь к классу.

вы можете получить доступ к ресурсу classpath несколькими способами. Вы можете использовать Class класс, который имеет getResourceXxx метод, из которого вы используете для получения ресурсов classpath.

например, если вы изменили структуру своего проекта ProjectRoot\src\resources\word.txt , вы можете использовать это:

getResourceAsStream возвращает InputStream , но получает URL-адрес под капотом. Кроме того, вы можете получить URL если это то, что вам нужно. getResource() вернет URL

для пользователей Maven, где структура каталогов похожа на src/main/resources содержимое resources папка помещается в корень пути к классам. Поэтому, если у вас есть файл, вы будете использовать только getResourceAsStream("/thefile.txt")

можно использовать относительные пути, но они могут быть сложными. Лучшее решение-знать, где сохраняются ваши файлы, то есть распечатать папку:

этот код должен печатать папку, в которой он ищет. Поместите файл туда, и вы будете хорошо идти.

ваш файл должен находиться непосредственно под папкой проекта, а не внутри любой другой подпапки.

если папка вашего проекта называется, например, AProject , он должен быть в том же месте, что и ваш .

Я думаю, это всегда сводится к classpath . сказав это, если вы запустите из той же папки, где ваш .класс тогда change Scanner input = new Scanner(new File("word.txt")); to Scanner input = new Scanner(new File("./word.txt")); это должно работать

убедитесь, что при создании txt-файла вы не вводите имя "name.txt", просто введите "имя". Если ввести " name.txt "Eclipse увидит это как" имя.формат txt.формат txt." Это решило все за меня. Также сохраните файл в папке src, а не в папке .java находится, одна папка вверх.

Я читал путь из файла свойств и не упоминал, что в конце было место. Убедитесь, что у вас его нет.

У меня такая же проблема, но знаешь почему? потому что я не ставил .txt в конце моего файла, и поэтому это был файл не текстовый файл, вы должны сделать только две вещи:

Читайте также: