2009-05-23 500 views
5

后来我在Microsoft Visual C#2008 Express Edition中编写了一个小程序。其中包括一个名为“ProblemReport.cs”的文件,它具有自己的形式和ProblemReport类。如何将cs文件添加到现有的C#项目?

我正在写一个新程序,并希望重用此代码。 (仍然在MS Vis C#2008 Express中工作)

在我的新程序中,在C#解决方案资源管理器中,右键单击我的项目并选择“Add existing item ...”然后添加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 2009-05-23 15:07:04

+0

我认为这个答案需要更多的信息。目前的答案表明,所有内容都必须位于同一个命名空间中。如果是这种情况,那么你不能在另一个程序中重新使用一个文件。 – 2016-10-19 11:48:02

1

当你创造了它很可能是使用了不同的命名空间,因为这些是从产生项目名称默认。

在.CS文件中名称空间是否与项目其余部分的名称空间相匹配?

2

你有一个“使用”指令添加到您的新项目 -

using ProblemReport; 

那么你应该能够访问ProblemReport类。当然,这取决于ProblemReport.cs文件的名称空间的名称。

+0

+1;我试图重新创建场景并得到与adeena相同的信息。使用导入表单的名称空间添加using语句修复了问题。 – 2009-05-23 14:41:31

4

将ProblemReport提取到它自己的类库(单独的dll)中可能会更好,因此您只有一个代码副本。

创建一个新的类库项目,将ProblemReport.cs,ProblemReport.designer.cs和ProblemReport.resx复制到该项目中,并根据需要更新名称空间。建立它并把dll放在中央。然后从两个程序中添加对此类库的引用。

相关问题