Переименование проекта → Не удалось разрешить эту ссылку. Сборку найти не удалось

Каждый раз, когда я создаю свое решение, я получаю следующее предупреждение:

Предупреждение Не удалось разрешить эту ссылку. Не удалось найти сборку "WordAPI". Убедитесь, что сборка существует на диске. Если эта ссылка требуется для вашего кода, вы можете получить ошибки компиляции. ПредложениеHost

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

Как это началось?

Я переименовал один из проектов в своем решении. Использовал щелчок правой кнопкой мыши -> вариант переименования. Я также использовал поиск и замену, чтобы переименовать пространство имен для всех моих файлов в проекте. Изменен файл AssemblyInfo.cs. В свойствах моего проекта на вкладке приложения я изменил Assembly Name и Default Namespace. Я также использую Costura.Fody, если это имеет значение.

Как я пытался это исправить?

  • Я изменил HintPath в файле проекта моей исполняемой сборки:

    <HintPath>..\WordAPI\bin\Debug\WordAPI.dll</HintPath>
    
  • Удалил ссылку из моей исполняемой сборки и прочитал ее.
  • Удалил мои папки отладки/выпуска в решении и перестроил решение.

Я действительно не могу найти решение, заманчиво начать пустое решение и просто скопировать туда все...


Свойства моей ссылки:

введите здесь описание изображения

Расположение проекта в проводнике:

введите здесь описание изображения


person Alexander Derck    schedule 27.01.2016    source источник
comment
Пытались убить файл .suo внутри папки сборки?   -  person SaneDeveloper    schedule 27.01.2016
comment
Поместите WordAPI.dll в какую-нибудь папку вашего проекта (например, Library) и ссылайтесь на нее оттуда (удалите старую ссылку и добавьте новую, на этот раз указав dll из библиотеки). Никогда не используйте папки obj и bin для ссылки на что-либо.   -  person Sinatr    schedule 27.01.2016
comment
@EngineerSpock Просто удалить его и перестроить? Sintatr Я сделаю это, когда закончу, но сейчас я меняю оба проекта одновременно, поэтому я не буду копировать .dll каждый раз, когда вношу изменения.   -  person Alexander Derck    schedule 27.01.2016
comment
Если WordAPI.dll также создается динамически, то вам может потребоваться изменить порядок сборки проектов. Сначала необходимо создать WordAPI.dll.   -  person Anil    schedule 27.01.2016
comment
@AnilKumar Где я могу выбрать порядок сборки? Если я удалю все папки отладки (таким образом, все dll будут удалены), я смогу создать решение, так что все в порядке.   -  person Alexander Derck    schedule 27.01.2016
comment
Щелкните правой кнопкой мыши решение-> Порядок сборки проекта, здесь вы также можете установить зависимость.   -  person Anil    schedule 27.01.2016
comment
Если wordAPI один из ваших проектов, то игнорируйте мой предыдущий комментарий. Добавьте этот проект в решение, укажите ссылку на проект (не dll-файл), настройте порядок сборки. Если вы переименовали проект wordAPI, вам, возможно, придется просто повторно сослаться на него. Если вы переименовали какой-то другой проект, который ссылается на wordAPI, то обычно ничего не нужно.   -  person Sinatr    schedule 27.01.2016
comment
@Sinatr Порядок сборки правильный. WordAPI сверху, OfferteHost снизу. Как я уже сказал в своем вопросе, я уже удалил ссылку и прочитал ее, удалил dll и перестроил их и т. д. Это очень странно.   -  person Alexander Derck    schedule 27.01.2016
comment
Попробуйте BUILD->Batch Build->Select All и затем нажмите Clean. После этого убедитесь, что вы ссылаетесь на WordAPI.dll из какой-то внешней папки.   -  person Andriy Buday    schedule 27.01.2016
comment
@AndriyBuday Спасибо, но, как я уже сказал, ссылка из внешней папки невозможна. Я все еще разрабатываю приложение и не могу вручную копировать библиотеку каждый раз, когда вношу небольшие изменения. В конце концов, когда все будет готово, я скопирую библиотеку в исполняемую сборку.   -  person Alexander Derck    schedule 27.01.2016


Ответы (3)


Если предположить, что WordAPI находится в том же решении, что и ваш исполняемый файл, ссылка не должна использовать HintPath. Удалите и добавьте ссылку, используя выбор Solution -> Projects. Ссылка в исполняемом файле csproj должна выглядеть так:

<ProjectReference Include="..\WordAPI.csproj">
  <Project>{GUID}</Project>
  <Name>WordAPI</Name>
</ProjectReference>

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

Без более подробной информации о ваших проектах, решениях, путях сборки, конфигурациях сборки трудно дать лучший ответ.

person Marie Pichova    schedule 27.01.2016
comment
Это сделало это! Еще раз доказывает, что лучшее решение — это простое решение: D HintPath действительно удалено из моего файла OfferteHost.csproj. - person Alexander Derck; 27.01.2016

  1. Путь не должен указывать на папку /bin. Вместо этого вы можете сослаться на папку /packages в
  2. Свойство «Copy Local» в свойствах ссылки должно быть «True», поэтому указанный DLL-файл фактически копируется при развертывании приложения.
person webMac    schedule 31.05.2017
comment
В конечном итоге это решение, но мой вопрос касался этапа разработки, когда вы не хотите вручную копировать свою DLL каждый раз, когда вносите изменения. - person Alexander Derck; 31.05.2017

Предполагая, что у вас есть проект сборки и тестовый проект (исполняемый) в одном и том же решении, вам нужно перейти на страницы свойств решения, затем «Общие свойства»> «Зависимости проекта», затем выбрать свой тестовый проект в «Проекты». " и установите флажок "Зависит от" вашего проекта сборки. Итак, теперь ваша сборка будет собрана до начала сборки тестового исполняемого файла, и предупреждение исчезнет. В противном случае сборка будет параллельной, и сборка может еще не существовать при запуске сборки тестового исполняемого файла.

По крайней мере, это работает для VS2015.

person BillyJoe    schedule 23.01.2018