Хорошо, у меня был этот миллион раз раньше, и на него ответили 1 миллион +1 раз раньше.
И все же, еще раз. У меня есть 3 проекта, A, B и C, каждая из которых является DLL. Каждый проект -.Net 4.0 (а не сборка клиента, полная версия 4.0). Project C ссылается на A и B. На них ссылаются как на проекты, а на выходе устанавливается локальное копирование.
В C у меня есть два оператора using в файле .cs:
using A;
using B;
Когда я компилирую, я получаю жалобу, которая не может найти B. A в порядке. B зависит от A.
Что я должен делать? Я удалил и снова добавил, закрыл VS2010, снова открыл его, посмотрел файл .csproj. И я просто не могу это получить. Опять же, в миллионный раз.
Кто-то, пожалуйста, похлопываешь меня настолько, что я узнаю источник этого раз и навсегда!
И да, это, вероятно, ответит где-то в StackOverflow, но ни в одном из лучших ответов, которые я проверил до сих пор. Сроки слишком общие, чтобы быть полезными, слишком много вопросов, где ответ "duh, добавьте ссылку". Я прошел мимо этого пункта.
Вот ошибки, которые я получаю. Есть 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">
Это не компилируется, WARNS, что он не может найти проект, на который ссылается, тогда все эти ERROR происходят. Но затем я меняю ProjectReference на следующее:
<ProjectReference Include="C:\...\Partners.Connectors.Base.2010.csproj">
... и все работает отлично. Обратите внимание, что ни один из этих путей не содержит 256 символов. Полностью квалифицированный - всего 135 символов. Но, возможно, IDE делает глупые украшения пути.