2009-05-23 2 views
5

Некоторое время назад я написал небольшую программу в Microsoft Visual C# 2008 Express Edition. В него был включен файл «ProblemReport.cs» со своей собственной формой и классом ProblemReport.Как добавить файл cs в существующий проект C#?

Я пишу новую программу и хочу повторно использовать этот код. (все еще работает в MS Vis C# 2008 express)

В моей новой программе, в C# Solution Explorer, я щелкнул правой кнопкой мыши по моему проекту и выбрал «Добавить существующий элемент ...» Затем я добавил ProblemReport.cs, ProblemReport. designer.cs и ProblemReport.resx.

Какие шаги я пропущу здесь? Когда я вернусь к основной форме в моей новой программе и попытаюсь создать экземпляр нового экземпляра «ProblemReport», я получаю сообщение об ошибке:

«Не удалось найти тип имени пространства имен« ProblemReport »(есть у вас отсутствует директива по использованию или ссылка на сборку?) «

Очевидно - я должен сделать что-то еще, чтобы заставить это работать ... просто не уверен, что это такое!

-Adeena

ответ

9

Убедитесь, что все ваши файлы CS находятся в том же пространстве имен. Похоже, что импортированные (-ы) не живут с вашим новым проектом.

Убедитесь, что:

namespace MyProgram //same as the rest of your project 
{ 

    public class ProblemReport 
    { 
    } 

} 

Между тем в других ваших .cs файлов ....

namespace MyProgram 
{ 

    public class SomeClass 
    { 
      public void DoSomething() 
      { 
       ProblemReport. //you should get intellisense here. 
      } 
     } 

} 
+0

Это было ... спасибо! :) – adeena

+0

Я думаю, что этот ответ нуждается в дополнительной информации. Текущий ответ предполагает, что все должно быть в одном пространстве имен. Если это так, вы не можете повторно использовать файл в другой программе. –

1

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

В файле .CS пространство имен совпадает с пространством имён остальной части вашего проекта?

2

Вы должны добавить «используя» директиву нового проекта -

using ProblemReport; 

Тогда вы должны быть в состоянии получить доступ к классу ProblemReport. Конечно, это зависит от имени пространства имен файла ProblemReport.cs.

+0

+1; Я попытался воссоздать сценарий и получил то же сообщение, что и adeena. Исправлена ​​проблема с добавлением оператора using с пространством имен для импортированной формы. –

4

Возможно, вам лучше избавиться от проблемы ProblemReport в собственной библиотеке классов (отдельная dll), поэтому у вас есть только одна копия кода.

Создайте новый проект библиотеки классов, скопируйте ProblemReport.cs, ProblemReport.designer.cs и ProblemReport.resx в это и обновите пространство имен по мере необходимости. Постройте его и разместите dll где-то в центре. Затем добавьте ссылку на эту библиотеку классов из двух ваших программ.

+0

да - вы правы, что это то, что я должен делать ... и я мог бы ... проблема с пространством имен исправлена ​​на данный момент. Единственная причина, по которой я бы этого не делал, - это то, что форма, используемая в обеих моих программах, будет немного отличаться. – adeena

+0

Ну, вы можете использовать класс в общем коде и подклассе в программах ... – ChrisF

Смежные вопросы