TeamCity: тип или пространство имен не найдены, но ссылка существует, и мой проект компилируется локально

У меня есть проект ASP.net MVC 3. Мы используем TeamCity, и до сих пор все было в порядке. Внезапно сегодня я сделал проверку, и сборка TeamCity не удалась. Он сказал, что мне не хватает директивы использования или ссылки на сборку, и выдало ошибку компиляции.

Проект на моем локальном компьютере успешно строится. Я переделывал его несколько раз, чтобы убедиться. Я проверил ссылку, и она там. Я проверил файл .csproj, и там тоже есть ссылка. Я проверил корзину; Это здесь. Я даже зашел по РДП на сервер где развернут наш сайт и проверил там бин, да и dll файл там тоже есть.

Я не понимаю, почему он не работает, я ничего не менял в конкретных файлах, которые, как он говорит, не имеют ссылки на сборку в течение нескольких недель, вчера я успешно зарегистрировался в TeamCity, файл dll существует везде, где он должен быть, и мой проект строится. Я даже сделал полную перезагрузку последнего коммита, который я сделал, который успешно зарегистрировался, добавил свои изменения обратно (что не имело ничего общего с проблемой ссылки, все мои изменения были в файле .js) и проверил это, но У меня такая же ошибка компиляции.

Кто-нибудь знает, что происходит не так, или, по крайней мере, что я могу попытаться решить?

edit: здесь не используются файлы путей, рассматриваемый файл представляет собой файл .dll, который я добавил, нажав «Добавить ссылку» в проекте. Я проверил репозиторий Github, и файл .dll находится в папке bin.


person Erica Stockwell-Alpert    schedule 15.08.2014    source источник
comment
Мне кажется, что DLL была удалена из вашего репозитория, но все еще присутствует на вашем локальном компьютере.   -  person iamkrillin    schedule 15.08.2014
comment
Как я могу это исправить? У меня есть это на моей локальной машине, и я нажал на master, но явно это не сработало. Что еще мне делать?   -  person Erica Stockwell-Alpert    schedule 15.08.2014
comment
Если файл, который, по его словам, отсутствует, присутствует в вашей системе контроля версий, это может быть проблемой пути. Например, если в вашем проекте есть файл C:\‹somepath›\‹somefile›.dll (примечание: абсолютный путь) вместо \‹somefile›.dll (примечание: относительный путь), он, скорее всего, не будет работать, когда teamcity попытается запустить сборку   -  person iamkrillin    schedule 15.08.2014


Ответы (4)


iamkrillin заставил меня подумать, что, возможно, это проблема пути, поэтому я открыл файл csproj и заметил, что формат ссылка на «отсутствующий» файл отличалась от всех остальных вокруг него:

<Reference Include="Ektron.Newtonsoft.json">
  <HintPath>..\..\Custom\bin\Ektron.Newtonsoft.json.dll</HintPath>
</Reference>

// THE "MISSING" FILE
<Reference Include="Smdg.Utils, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\NEHGS\bin\Smdg.Utils.dll</HintPath>
</Reference>

Я проверил папку Custom\bin и, конечно же, файл .dll был там (хотя он также существовал в NEHGS\bin), поэтому я избавился от тега SpecificVersion и изменил путь к папке Custom. TeamCity смог это проверить.

Почему он вдруг сломался, когда работал последние 2 месяца, понятия не имею.

person Erica Stockwell-Alpert    schedule 15.08.2014

У меня было это только из-за того, что пакеты NUGET не хранились в VCS (GIT).

Таким образом, необходимо выполнить восстановление пакетов NUGET непосредственно перед этапом сборки.

https://blog.jetbrains.com/teamcity/2013/08/nuget-package-restore-with-teamcity/

person Motlicek Petr    schedule 14.10.2016

У меня была такая же проблема, когда моя сборка TC внезапно не смогла найти сборку. Я решил это, проверив пути. В моей сборке не было тега. Как только я добавил тег с путем к dll, TC смог успешно собрать

person Alexander Burke    schedule 14.11.2014

Я надеюсь, что это поможет кому-то там, в моем случае мне пришлось проверить папки, в которых были эталонные пакеты dll/nuget. Обратите внимание, что я уже зафиксировал проект, но по какой-то причине «SVN» не зарегистрировал/не зафиксировал (локальные) папки, в которых были пакеты dll/nuget, поэтому мне пришлось перейти к папкам и зарегистрировать их.

person Ask    schedule 21.04.2017
comment
TeamCity должен восстанавливать отсутствующие NuGets в каждой сборке. Двоичные файлы NuGet не должны контролироваться версиями. - person tkit; 05.10.2018