C # asp.net - Не удалось найти тип или имя пространства имен «Помощник» (вам не хватает директивы using или ссылки на сборку?) - PullRequest
2 голосов
/ 05 августа 2010

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

Я переместил соответствующий код в соответствующие ранее существующие классы и создал отдельный, совершенно новый вспомогательный класс в соответствующем проекте, но все мои ссылки на этот класс просто не работают.

Вот простое представление о том, как выглядит мой класс (имена немного изменились);

namespace Company.Web.Application.Reporting 

{
    public class ReportHelper
    {
    here I have a bunch of methods
    }
}

и вот как на него ссылаются;

using Company.Web.Application.Reporting;

namespace Company.Web.Application.App.Reports
{
    public partial class PlansReports : PageBase
    {
        //This is the problem part
        private ReportHelper Helper = new ReportHelper(); 
        heaps of other code with no problems here...
    }
}

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

Тип или имя пространства имен «ReportHelper» не найден Вы пропустили директиву использования или ссылка на сборку?)

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

Любая помощь с благодарностью,

Пат.

Ответы [ 4 ]

1 голос
/ 06 августа 2010

ОК, я обнаружил проблему (на самом деле это сделал коллега)

Этот оригинальный класс Helper содержался в папке app_code моего основного проекта, который, как я только что узнал, по-разному обрабатывает компиляцию для всех других папок.в проекте.Код здесь компилируется во время выполнения, а не во время сборки.Когда я создавал свои новые классы, они находились в папке app_code, потому что я использовал код спешки, чтобы извлечь класс в новый файл, который сохранил его в том же месте ... после чего я переместил их в «разумное» местоположение.К сожалению, у них все еще было действие сборки Content, унаследованное от их предыдущего присутствия в папке app_code.Итак, в новом файле класса я просто изменил его действие по сборке на «Compile», и теперь все в порядке с миром.

Приветствия,

Пат.

0 голосов
/ 05 августа 2010

Вы построили Company.Web.Application.Reporting, чтобы тип был известен? Это было бы моей идеей наряду с обеспечением правильной настройки зависимостей.

0 голосов
/ 05 августа 2010

Звучит так, будто вы знаете, что делаете, и все выглядит правильно, поэтому это должно быть что-то простое. Вы пытаетесь получить доступ к изменениям в ReportHelper, которые не были скомпилированы в DLL? Я бы попытался восстановить эталонную сборку; каждый раз, когда вы вносите изменения в эту сборку, ее необходимо перестраивать.

Также убедитесь, что вы добавляете правильную сборку (например, Debug vs. Release) в свой проект. Не имеет значения, какой тип, но вы не хотите компилировать новые изменения в dll отладки и продолжаете добавлять старую версию dll выпуска.

0 голосов
/ 05 августа 2010

Ваш ReportHelper находится в отдельном проекте или DLL?Если да, вы добавили этот проект / DLL в качестве ссылки?(В обозревателе решений в разделе «Ссылки» проверьте, существует ли ваш проект / dll.

...