#c# #razor #visual-studio-2019
#c# #razor #visual-studio-2019
Вопрос:
У меня есть проект MVC, который ссылается на пользовательскую библиотеку DLL в другом проекте. DLL называется «Web» и имеет классы, которые мне нужны в «Моделях».
Я добавил DLL в качестве ссылки в проект, где она необходима, и в контроллерах и моделях проекта она доступна. Я могу воспользоваться линией:
using Web.Models.Base;
И
using Web.Models.AppToolKit
И все объекты в этих классах доступны.
Однако в представлениях, в том же проекте, веб-пространство имен вообще недоступно. Я получаю:
Severity Code Description Project File Line Suppression State
Error CS0246 The type or namespace name 'Web' could not be found (are you missing a using directive or an assembly reference?)
И когда я использую модель, которую я создал в проекте в представлении, которая наследуется от ссылочной библиотеки DLL и компилируется без проблем, я получаю сообщение об ошибке:
Error CS0012 The type 'BasicNetPageModel' is defined in an assembly that is not referenced. You must add a reference to assembly 'Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Несмотря на то, что на эту DLL есть ссылка, и она работает как в моделях, так и в контроллерах для одного и того же проекта.
Я использую VS 2019. Я много раз пытался удалить / повторно добавить ссылку и очистить / перестроить.
Я пробовал добавлять:
<add namespace="TASWeb.Models.Base"/>
в файле web.config.
Есть какие-нибудь идеи?
Комментарии:
1. Отображается ли ошибка в окне списка ошибок и редакторе? Вероятно, платформа, созданная из вашей библиотеки dll, отличается от вашего проекта.
2. Вы пробовали что-то вроде @using Web.Models. База в поле зрения?
3. @Adleri Я. Это проявляется в обоих случаях. Я проверил оба проекта, и они являются .Net 4.6.1 с целевой платформой x64.
4. @DickBos я сделал да, и там написано «имя «Web» не найдено».
5. Вы проверили, не является ли это проблемой профилирования
Ответ №1:
Похоже, проблема заключалась во второй DLL, на которую ссылались из первой DLL.
Для этого проекта было установлено значение x86. Я установил его на ЛЮБОЙ процессор, перекомпилировал, затем перекомпилировал первую DLL, после чего рассматриваемый проект смог распознать пространство имен.