如何向现有的C#项目中添加一个cs文件?

7

前段时间,我在Microsoft Visual C# 2008 Express Edition中编写了一个小程序。其中包括一个名为“ProblemReport.cs”的文件,它有自己的表单和ProblemReport类。

现在我正在编写一个新程序,想要重用这些代码。(仍在使用MS Vis C# 2008 express)

在我的新程序中,在C# Solution Explorer中,我右键单击我的项目,选择“添加现有项...”,然后添加ProblemReport.cs、ProblemReport.designer.cs和ProblemReport.resx。

我错过了哪一步呢?当我回到我的新程序的主窗体,并尝试实例化一个新的“ProblemReport”实例时,我收到以下错误信息:

“The type of namespace name 'ProblemReport' could not be found (are you missing a using directive or an assembly reference?)”

很明显,我需要做其他事情才能使它工作...只是不确定是什么!

-Adeena

4个回答

10

确保所有的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.
           }
      }

}

我认为这个答案需要更多的信息。当前的答案表明一切都必须在同一个命名空间中。如果是这样的话,那么你就不能在另一个程序中重复使用一个文件。 - Paul McCarthy

4
你最好将ProblemReport提取到自己的类库中(单独的dll),这样你只需要一份代码。
创建一个新的类库项目,将ProblemReport.cs、ProblemReport.designer.cs和ProblemReport.resx复制到其中,并根据需要更新命名空间。构建它并将dll放在某个中心位置。然后从你的两个程序中添加对这个类库的引用。

是的 - 你说得对,这是我应该做的... 我可能会这样做... 命名空间问题现在已经解决了。我不这样做的唯一原因是我两个程序中使用的表单会有一点不同。 - adeena

2
你需要在新项目中添加一个 "using" 指令 -
using ProblemReport;

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


+1;我尝试重新创建了这种情况,并得到了与adeena相同的消息。添加一个使用语句,使用导入表单的命名空间来修复问题。 - Fredrik Mörk

1

当您创建它时,很可能使用了不同的命名空间,因为默认情况下这些是从项目名称生成的。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接