проблемы с библиотекой классов при использовании вложенных пространств имен - PullRequest
1 голос
/ 04 января 2011

РЕДАКТИРОВАТЬ: У меня есть библиотека классов, которая быстро растет, и я решил немного ее организовать ... Пространства имен библиотеки классов структурированы следующим образом:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Web;

namespace ClassLibrary1
{
    namespace FirstNS
    {
        public class Class1
        {
            ReportDocument report = new ReportDocument();

            public static void ShowMe()
            {
                Console.WriteLine("Class1");
            }
        }
    }
    namespace SecondNS
    {
        public class Class2
        {
            public static void ShowMe()
            {
                Console.WriteLine("Class2");
            }
        }
    }
}

Компилируется нормально.Когда я пытаюсь использовать скомпилированную dll, ссылаясь на нее в консольном приложении, я могу ссылаться на пространство имен с помощью директивы using.Однако, когда я пытаюсь создать приложение, оно говорит: «Тип или имя пространства имен« ClassLibrary1 »не может быть найдено ...».

Я понял, что удаление сборок CrystalDecisions решает проблему, с которой я столкнулся.просто не знаю почему.- Как бы странно это ни звучало, проблема связана с наличием вложенных пространств имен.Если я использую отдельные пространства имен, проблема исчезнет.

Ответы [ 2 ]

2 голосов
/ 04 января 2011

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

В вашем основном приложении добавьте ссылки на кристалл ИЛИ в самомхотя бы поместите эти сборки в каталог bin.Поскольку основное приложение не может найти все необходимые детали для сборки, оно не может его использовать.

1 голос
/ 06 января 2011

Ответ Криса заставил меня задуматься о доступных сборках, и я понял, в чем проблема.

Сборки Crystal - это Framework 2, а основным приложением была Framework 4. Смена целевого каркаса обратно на 2 устранила проблему.Точно так же я предполагаю, что использование сборок Framework 4 Crystal (если они существуют) также должно решить эту проблему.

PS: я думаю, что сообщение об ошибке может быть более полезным, хотя ... возможно, указывая на ресурс недоступен, а не вся библиотека классов.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...