Хорошо, у меня было это миллион раз, и на него ответили 1 миллион +1 раз.
И все же, еще раз. У меня есть 3 проекта, A, B и C, каждый из которых DLL. Каждый проект .Net 4.0 (не клиентская сборка, полная 4.0). Ссылки на проекты C и A и B. Они упоминаются как проекты, а выходные данные настроены для локального копирования.
В C у меня есть два оператора using в моем файле .cs:
using A;
using B;
Когда я компилирую, я получаю жалобу, которая не может найти B. A в порядке. B зависит от A.
Какого черта я должен делать? Я удалил и снова добавил, закрыл VS2010, снова открыл его, посмотрел на файл .csproj. И я просто не могу получить это. Опять же, в миллионный раз.
Кто-нибудь, пожалуйста, напишите мне достаточно смысла, чтобы я раз и навсегда узнал источник этого!
И да, это, вероятно, ответ где-то в StackOverflow, но не в одном из лучших ответов, которые я проверял до сих пор. Термины слишком общие, чтобы их можно было использовать, слишком много вопросов, где ответ «да, добавь ссылку». Я прошел этот пункт.
Вот ошибки, которые я получаю. Есть 3 вида, но из прошлого опыта последний является истинным.
Error 130 'AWI.WWG.EXPMRI.MriUpload.Data.MriUpload' does not contain a definition for 'Database' and no extension method 'Database' accepting a first argument of type 'AWI.WWG.EXPMRI.MriUpload.Data.MriUpload' could be found (are you missing a using directive or an assembly reference?)
Error 114 'object' does not contain a definition for <blah>
Error 59 The type or namespace name '<blah>' could not be found (are you missing a using directive or an assembly reference?)
Ага, я посмотрел на предупреждения, а не только на ошибки, и вот что я вижу:
Warning 69 The referenced project '..\..\..\..\..\..\..\Partners\integration\framework\connectors\Partners.Connectors.Base\Partners.Connectors.Base\Partners.Connectors.Base.2010.csproj' does not exist. AWI.WWG.EXPMRI.MriUpload.Objects
Этот файл .csproj в данном случае является буквой "B". Даже если я удаляю и повторно добавляю ссылку на проект, я получаю это. Но мне кажется, что я все ближе!
Хм, я только что нашел другую DLL, назовите ее "D", на которую ссылается "A". Когда я добавляю его в проект, я начинаю получать жалобу:
----------------
The Add Reference Dialog could not be shown due to the error:
The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
----------------
Может ли это быть связано, или просто другое отвлечение?
Хорошо, я нашел проблему, хотя я ее не понимаю.
Когда я добавляю ссылку через IDE, она добавляет это в файл csproj "C":
<ProjectReference Include="..\..\..\..\..\..\..\Partners\integration\framework\connectors\Partners.Connectors.Base\Partners.Connectors.Base\Partners.Connectors.Base.2010.csproj">
Это не компилируется, это ПРЕДУПРЕЖДАЕТ, что не может найти ссылочный проект, тогда происходят все эти ОШИБКИ. Но затем я изменяю ProjectReference на следующее:
<ProjectReference Include="C:\...\Partners.Connectors.Base.2010.csproj">
... и все работает просто отлично. Обратите внимание, что ни один из этих путей не является чем-то близким к 256 символам. Полностью квалифицированный - всего 135 символов. Но, возможно, IDE делает какое-то глупое украшение пути.