Ошибка с дозвуковой 2.1

Я получаю очень странные ошибки при компиляции нашей библиотеки доступа к данным (все дозвуковые). Ошибки

Error 35 The type name 'Web' does not exist in the type 'S3.DACL.System'    
      C:\Projects\S3\src\DACL\AspnetUser.cs 369 63 DACL

И

Error 37 The type name 'ComponentModel' does not exist in the type 
 'S3.DACL.System' 
C:\Projects\S3\src\DACL\AspnetPersonalizationPerUserController.cs 19 13 DACL

и они есть на всех моих сгенерированных дозвуковых классах.

У меня есть 2 проекта - веб-проект, а затем библиотека классов под названием DACL. Мои дозвуковые файлы web.config выглядят так:

<connectionStrings>
  <add name="S3" connectionString="data source=ServerName;initial catalog=Cat1;
         user id=usenrame;password=password;" />
</connectionStrings>
<SubSonicService defaultProvider="S3">
  <providers>
    <add name="S3" type="SubSonic.SqlDataProvider, SubSonic" 
       connectionStringName="S3" generatedNamespace="S3.DACL"/>
  </providers>
</SubSonicService>

У меня была эта ошибка сегодня вечером, но это было из-за типа параметра поставщика по умолчанию.

У кого-нибудь есть идеи, почему я получаю эти ошибки? Я в отчаянии и последний час бился головой о стену.


person Matt Dawdy    schedule 05.10.2009    source источник


Ответы (3)


Вам также может потребоваться добавить ссылку на пространство имен System.configuration, если вы еще этого не сделали.

person Joe    schedule 05.10.2009
comment
Этот у меня тоже есть. System.Web, System.configuration, System.Data, System.Data.DataSetExtesions, System.XML, System.Xml.Linq, System.Core ... Я до сих пор не знаю, почему это происходит. - person Matt Dawdy; 06.10.2009

Subsonic использует пространство имен System.Web. Поэтому, пожалуйста, добавьте ссылку на другие пространства имен System.Web в свои проекты.

person TheVillageIdiot    schedule 05.10.2009
comment
Я понял. System.Web, System.configuration, System.Data, System.Data.DataSetExtesions, System.XML, System.Xml.Linq, System.Core ... Я до сих пор не знаю, почему это происходит. - person Matt Dawdy; 06.10.2009
comment
Вы тоже добавили их в свой проект DAL? - person TheVillageIdiot; 06.10.2009

В итоге проблема заключалась в следующем: какой-то гений (на самом деле он довольно умен, у него просто мозги пердеть) добавлял таблицы в БД (я знал, что он это делал). Однако я НЕ знал, что он добавил таблицу с именем «Система». Что ж, это сбило с толку Subsonic, потому что он создал класс под названием «System».

НЕ делайте этого в своих собственных проектах. .Net очень путается между пространством имен System и классом. И никто не выигрывает.

После того, как я переименовал таблицу, удалил файлы System.cs и SystemController.cs, отредактировал файл DACL.csproj вручную (по какой-то причине он не удалял ссылки на эти 2 класса), закрыл решение и перекомпилировал, НАКОНЕЦ, это все снова заработало.

Это добавлено в мой собственный список глупых вещей, которые нужно искать, прежде чем искать экзотические решения.

Спасибо за совет, TheVillageIdiot и Джо. Ваши предложения все еще стоит проверить.

person Matt Dawdy    schedule 06.10.2009