22:40

c#

с пробитой головой калека
Ситуация:
при написании тестов к блоку программы, не удается создать элемент класса.
т.е.
есть у меня:

в данном классе функций чуть больше, но это не суть.
в тестовом файле при попытке создать элемент класса ClassOne Element = new ClassOne();
начинает писать, что 'не удалось найти имя типа или пространство имен' и тд, но при этом прекрасно переходит по ссылке 'перейти к определению класса'.
все namespace подключены. при прописывании полного пути к файлу а-ля FileOne.ClassOne он сам предлагает этот класс, но при сборке начинает ругаться на то, что не нашел его.
что это вообще за безобразие и в чем может быть трабл? всю голову уже сломала.
заранее спасибо

@темы: C#

Комментарии
11.11.2013 в 23:06

Я знаю, что я гений, но мне от этого ничуть не легче.
слишком мало информации для квалифицированного ответа.
В приложенном примере есть только одна кривизна - точка в конце имени класса.
Хорошо бы иметь пример, реально воспроизводящий проблему.
11.11.2013 в 23:21

с пробитой головой калека
mikluho, точка - это очепятка)

если брать конкретный код то:
файл с функцией, которую надо протестировать

namespace Telemetry.Server.MyGarage.Worker
{
public class CarsLinkWorker
{

public bool CheckCL(int i)
{
bool result = true;
return result;
}

}
}


файл с тестом:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Telemetry.Server.MyGarage.Worker;

namespace TestMyGarage
{
[TestClass]
public class CarsLinkTest
{
[TestMethod]
public void TestMethod1()
{
//создадим элемент
CarsLinkWorker NewWorker = new CarsLinkWorker();


}
}
}


в строке
CarsLinkWorker NewWorker = new CarsLinkWorker();
выдается ошибка:
'Не удалось найти имя типа или пространства имен "CarsLinkWorker" (пропущена директива using или ссылка на сборку?)'

как вы видите, сборка сделана. при требовании перейти к определению функции CarsLinkWorker(), все прекрасно переходит и отображает нужный класс.
так же, при наборе ручками Telemetry.Server.MyGarage.Worker.CarsLinkWorker сам предлагает этот класс(т.е. видит его)

надеюсь, подробно объяснила
12.11.2013 в 00:39

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

PS
провёл эксперимент с этим кодом в 13-й студии. всё работает...
12.11.2013 в 00:55

с пробитой головой калека
mikluho,просто при компиляции. при попытке создания обычного проекта(не теста) и создания там подобной переменной, вылетает то же самое.
2012.
скопировала все, что было в окне 'ошибки'. убрала только строку и название проекта
12.11.2013 в 07:29

Я знаю, что я гений, но мне от этого ничуть не легче.
хм. приведённые в примере файлы в разных проектах?
Если так, надо посмотреть в лог компиляции, там наверняка есть ещё ошибки.
13.11.2013 в 16:30

с пробитой головой калека
mikluho, да. в разных.
спасибо за попытку помощи, но скорее всего ничего не выйдет. показывала проблему 'в живую' разным людям, все разводили руками и были в замешательстве(
13.11.2013 в 17:27

Я знаю, что я гений, но мне от этого ничуть не легче.
.tenderness_, И всё же, скорее всего дело в сбое на этапе компиляции. Я видел подобное, самая частая причина - невозможность скопировать dll в целевую папку (сообщение об этом должно отображаться в окне build output).