2009-10-20 5 views
1

Я получаю радостное название типа или пространства имен «Что-то» не существует в пространстве имен «Что-то еще» (вам не хватает ссылки на сборку?) ».Вам не хватает ссылки на сборку?

У меня есть проект веб-сайта, который содержит сам веб-сайт, а также несколько других пользовательских проектов, на которых полагается сайт. Проблема, с которой я сталкиваюсь, связана с одним из проектов, на которых основан веб-сайт, назовем его A. Он использует другой пользовательский проект под названием B.

Итак, B является частью решения, а I может успешно построить B. A имеет ссылку на B, и, как представляется, никаких ошибок нет (нет желтого треугольника-восклицательного знака). На самом веб-сайте также есть dll для A и B в папке Bin. У него также был файл dll.refresh для B, который был неправильным (неправильный путь). Однако, ручная коррекция dll.refresh, похоже, не имеет эффекта. Удаление этих файлов из папки bin в Интернете также не имеет эффекта.

Я также попытался удалить A и B из решения, а затем прочитать их. Я также попытался удалить ссылку A на B и затем добавить ее снова (как с вкладки проекта, так и с ручного просмотра на .dll).

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

Это результат журнала Fusion, я еще не совсем понял его.

 
    *** Assembly Binder Log Entry (10/20/2009 @ 1:43:06 PM) *** 

    The operation failed. 
    Bind result: hr = 0x80070002. The system cannot find the file specified. 

    Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll 
    Running under executable C:\Windows\SysWOW64\inetsrv\w3wp.exe 
    --- A detailed error log follows. 

    === Pre-bind state information === 
    LOG: User = NT AUTHORITY\NETWORK SERVICE 
    LOG: DisplayName = A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 
    (Fully-specified) 
    LOG: Appbase = file:///C:/source/ProjectRoot/Project/Website/ 
    LOG: Initial PrivatePath = C:\source\ProjectRoot\Project\Website\bin 
    LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\6db59b13 
    LOG: Cache Base = C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\6db59b13 
    LOG: AppName = 1601d5b6 
    Calling assembly : ProjectBO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
    === 
    LOG: This bind starts in default load context. 
    LOG: Using application configuration file: C:\source\ProjectRoot\Project\Website\web.config 
    LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v2.0.50727\Aspnet.config 
    LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config. 
    LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/6db59b13/1601d5b6/A.DLL. 
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/6db59b13/1601d5b6/A/A.DLL. 
    LOG: Attempting download of new URL file:///C:/source/ProjectRoot/Project/Website/bin/A.DLL. 
    LOG: Attempting download of new URL file:///C:/source/ProjectRoot/Project/Website/bin/A/A.DLL. 
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/6db59b13/1601d5b6/A.EXE. 
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/6db59b13/1601d5b6/A/A.EXE. 
    LOG: Attempting download of new URL file:///C:/source/ProjectRoot/Project/Website/bin/A.EXE. 
    LOG: Attempting download of new URL file:///C:/source/ProjectRoot/Project/Website/bin/A/A.EXE. 
    LOG: All probing URLs attempted and failed. 


Судя по этой линии: "LOG: Initial PrivatePath = C: \ Source \ ProjectRoot \ Project \ Сайт \ Bin" он выглядит как его происходит после DLL в бункере сайта, а не происходит после того, как dll, связанный с проектом A. Однако я не вижу упоминания B. В любом случае, надеюсь, что это поможет, и я буду продолжать изучать Fusion, кстати, классный инструмент!

+0

Разверните его и запустите журнал сварки. Он расскажет вам, где искать ваши DLL-файлы, которые помогут вам решить проблему. Это одна из причин, почему я избегаю веб-проектов, таких как чума. В WAP нет проблем. – Will

+0

Эх, когда вы говорите «Разверните его», что именно это составляет? Я настроил его через IIS (7.0), чтобы перейти к чему-то вроде http://dev.project.com/ и получить сайт. Разве это «развернуто»? – Trajanus

ответ

0

Получается, что товарищ по команде переименовал пространство имен, поэтому мне действительно не хватало ссылки на сборку, я думал, что это не так. Спасибо за помощь, хотя Уилл.

+0

NP. Вы можете отметить это как ответ после льготного периода. – Will

1

В подобных ситуациях журнал Fusion всегда является хорошей отправной точкой.

Если бы я должен был догадаться, один из ваших товарищей по команде изменил ссылку из проекта B (правильный путь) на фактическую копию B (просмотрев папку Bin B и добавив ссылку на найденную там DLL) ,

Очистите решение, удалить ссылку на B из A, B, построить, добавьте ссылку на проект в B, восстановление и испытание А.

Если это устранит проблему, любезно собрать своих коллег по работе и объяснить им, опасности прямого ссылки на DLL.

+0

Это не сработало. Чтобы быть на 110% ясным, я предполагаю, что когда вы говорите «очистить свое решение», вы имеете в виду щелчок правой кнопкой мыши по файлу решения и выбор варианта чистого решения. Когда вы говорите, чтобы добавить ссылку на проект в B, я предполагаю, что вы имеете в виду просмотр конкретного проекта (в данном случае, B) и добавление ссылки в разделе «Ссылки» через вкладку «Проекты». Я не смог заставить Fusion получить результаты компиляции в VS, но у меня есть результаты от попыток просмотра сайта в IE, я опубликую выше. – Trajanus

+0

Это то, что я имею в виду, добавив ссылку на проект: http://i36.tinypic.com/2ueslxt.png – Will

+0

ОК, да, вот как я добавил ссылку. – Trajanus

2

Я получил эту ошибку, когда проект с целевой структурой «Профиль клиента .NET Framework 4» ссылался на проект с целевой структурой «.NET Framework 4».

Надеюсь, это поможет кому-то, если не оригинальному плакату.

Смежные вопросы