2013-01-14 32 views
1

我知道,这实在不是一个聪明的问题,但我有一些麻烦了解Visual Studio 2010中如何在项目之间移动类在适当的方式

编程Windows窗体的一些工作,我需要移动类(假设:类x)包含在主名称空间和程序集中的源文件(假设为x.cs),该文件包含不同名称空间中的不同项目(和程序集)。后者是一个旨在收集公用事业类的dll。可能我以错误的方式做到了这一点。

症状是:当在主窗体(代码,而不是设计)中按下F12并将鼠标悬停在X类的构造函数上时,会显示一个“来自元数据”的新源,包括一个类声明(但仍然是I可以点击鼠标右键打开源代码并选择“显示源代码”)。看来VS无法在解决方案中找到适当的源代码。

我的问题:

  1. 如何我可以从这个有F12指向正确的方法恢复?
  2. 更一般地说,在不同的项目和/或程序集中移动代码的正确方法是什么?

回答

1

我刚刚去复制上述问题,但它对我来说工作正常。让我描述一下我采取的步骤,也许你会发现你做了什么不同的事情。

  1. 创建新的解决方案。
  2. 添加名为FormsApp的新Windows窗体应用程序。这给了我一个名为Form1的窗体,其中有一个FormsApp的默认名称空间。
  3. 在FormsApp项目的一个名为util.cs的文件中创建一个名为Util的类。它获得FormsApp的相同名称空间。
  4. 如果我在Form1的构造函数中创建了Util类的实例,我可以按照预期将它打到F12的定义中。
  5. 在解决方案中创建一个名为Utility的新类库。
  6. 可以通过多种方式移动文件,但我只是在解决方案资源管理器中单击了util.cs文件,然后将其拖放到Utility项目。这将复制文件,但保留原文。也许你已经复制你的文件不同?
  7. 当原始文件被删除时,如果您尝试编译,您应该会收到编译错误。这是可以预料的,因为FormsApp项目对新添加的Utility项目中的Util类没有任何了解。
  8. 在解决方案资源管理器的FormsApp项目中添加对Utility项目的引用。
  9. 如果您尝试构建现在,它应该成功。在Form1构造函数中按F12使我可以像预期的那样定义Util类,即使我没有更改Util类的名称空间。

如果它有助于澄清事情,这里有一些图片:

Solution Explorer中:

Solution Explorer

Form1构造:

enter image description here

的Util类:

enter image description here

+0

感谢您的帮助。我可能做了类似于你的程序的东西,但我相信在复制之后(不确定)在原始文件上选择了“从项目中排除”。无论如何,我无法发现问题文件和其他文件之间的区别。这种情况似乎很难恢复。 – Daniel

+0

@Daniel:你可以随时撤销你的改变,然后尝试我描述的移动文件的方法。如果它仍然不起作用,那么可能会添加更多信息,如项目的命名约定和涉及的层次结构。 – Malice