30

我在我的解决方案中添加了一个项目 Project2。它已经有另一个项目,比如说项目 1。如何将项目 2 中的类和方法调用到项目 1 中?

我做了什么:

我有项目 1 及其解决方案。我将项目 2 添加到项目 1 的解决方案中。项目 1 和项目 2 都有一个名为 Correction 的命名空间。现在,我使用 Correction 调用。但是,在项目 1 中键入 Project2 给了我一个错误,因为它声称它不知道它是什么。

我还添加了项目 2 作为参考。

感谢所有的答案。我不知道我做错了什么

4

9 回答 9

50

首先,您需要在 Project1 中添加对 Project2 的引用。

如果您转到 Project1 -> References -> Add Reference,您应该会看到在解决方案中添加项目并添加 project2 的选项。

添加引用后,要调用命名空间 Name1.Name2 中的类 Foo,您可以将该类用作

Name1.Name2.Foo foo = new Name1.Name2.Foo(...);

或者如果您想避免打字,您可以在文件顶部附近添加 using 语句

using Name1.Name2;

现在可以仅使用 Foo 引用该类,例如

Foo foo = new Foo(...);

请注意,您将弄清楚Project2 中的命名空间。仅使用名称 Project2 是行不通的。查看包含您要使用的类的声明的文件并查找命名空间定义。

所以如果你看到一些东西

namespace Name1.Name2 {


    class Bar {
        // Blah
    }

    // Notice the word public here.
    public class Foo {
        // Blah
    }
}

Name1.Name2 是 Foo 的名称空间,这就是您需要使用的名称。

另请注意,您可能需要为要在 Project1 中使用的类具有公共访问修饰符。例如在上述场景中,您应该能够访问类 Foo,但不能访问类 Bar。

此页面将帮助您了解命名空间:http ://www.csharp-station.com/tutorials/lesson06.aspx

于 2010-02-21T17:18:18.977 回答
4

我刚刚遇到了同样的问题。我三重检查了所有内容,并添加了引用,项目在同一个解决方案中,一切都设置好了。我也知道我的命名空间,我什至完成了代码,但是在构建时,我遇到了同样的错误,即找不到命名空间。

我花了一个小时才发现这一点:我添加的项目没有找到相应的命名空间,被设置为不同的 .NET 目标框架。我将解决方案更改为“完整的”.NET Framework 4 而不是 Client Profile 4,但我添加的新项目再次设置为 Client Profile。

它没有给我关于错误配置的适当警告,而是声称找不到命名空间。

希望这对某人有所帮助,并为您节省我刚刚浪费的时间。

于 2013-05-07T20:34:52.110 回答
3

您必须指定要调用的代码的“路径”。您可以通过以下任一方式完成此操作

1) 指定您希望使用的第二个项目/类的命名空间,通常位于代码文件的顶部。

using MySecondProject;

var foo = new ClassFromSecondProject();

2) 明确指定您希望使用的类的名称,包括其命名空间

//do stuff
var foo = new MySecondProject.ClassFromSecondProject();
//do more stuff
于 2010-02-21T18:22:57.910 回答
2

您只需将 Project1 中的引用添加到 Project 2。您可以通过右键单击References解决方案资源管理器窗格中的文件夹来执行此操作,然后您可以使用该Browse选项来查找 Project2。或者,如果它已经添加到解决方案中,您可以使用该Projects选项卡。

只是为了为你澄清这一点。Solution向中添加项目添加引用不同。在 Visual Studio 中打开 Project2。然后将 Project1 也添加到解决方案中,或者右键单击ReferencesProject2 中的文件夹并添加对 Project1 的引用。为确保您已正确添加参考,请展开参考文件夹并验证您是否可以Project1在列表中看到。

例子

创建一个新的控制台应用程序并调用它MyApplication。然后右键单击Solution并选择Add New Project选项并创建一个新的库项目并调用它MyLib。此时,您只是将 2 个项目添加到 1 个解决方案中,没有创建每个项目之间的引用。

右键单击项目References下的文件夹MyApplication并选择Add Reference.... 由于MyLib已经是解决方案的一部分,您可以转到Projects选项卡并MyLib从列表中选择,该列表会在MyApplication. 如果它不是解决方案的一部分,您可以使用Browse选项卡并通过资源管理器找到项目。

所以此时我们已经在内部建立了MyApplicationMyLib. 因此,为了从MyLib内部使用类,MyApplication我们可以在单元内为项目声明一个 using,或者我们可以直接使用完整路径,例如

// main code file in MyApplication

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyLib;  // This will allow me to access the classes inside MyLib directly

namespace PdfPrinter
{
    class Program
    {
        static void Main(string[] args)
        {
             // if we have declared the namespace at the top, we can do:
             MyLibClass cls = new MyLibClass();
             // or if you don't want to add the namespace at the top we have to do:
             MyLib.MyLibClass cls = new MyLib.MyLibClass();
        }
    }
}

希望这可以为您解决一些问题。

于 2010-02-21T17:19:42.283 回答
1

选择您将使用的项目(例如 project1),在解决方案资源管理器中右键单击它,然后单击“添加引用”。

您将能够从那里添加对其他解决方案的引用(project2)。

然后你所要做的就是在你的主项目(project1)中添加一个using语句,你就可以正常访问它了。

于 2010-02-21T17:23:12.387 回答
1

我没有足够的代表来支持汤姆的回答,但这对我帮助很大。此外,您必须选择相同的 .NET Framework 子版本(除了它是相同的完整/核心/标准等)。我在测试项目中指定了 4.5 并收到此错误,将其更改为 4.6.1(与其他版本相同)修复了此问题。

于 2018-03-06T10:49:29.943 回答
0

您需要将 Project2 添加到 Project1 的引用中。现在您可以从 Project2 访问这些类。不要忘记添加正确的命名空间!

于 2010-02-21T17:19:04.763 回答
0

正如其他人所说,您需要将(现有)项目添加到解决方案中。然后,您需要在Solution -> Projects下添加对它们的引用。它们现在应该在对象浏览器中显示它们的命名空间。

您还需要确定一件事,这需要我进行一些实验才能找到。每当我添加第二个项目时,第一个项目停止工作,并且错误消息与项目缺少引用时相同(“找不到类型或命名空间名称'Ber'(您是否缺少 using 指令或程序集参考?)”)。问题是两个项目在项目Properties -> Application中具有相同的默认程序集名称(“类库”)。所以给他们唯一的名字。我使用与默认命名空间相同的名称。

于 2014-10-03T09:28:28.253 回答
0

我对这个错误有同样的问题。我无法从 project2 中检测到 project1。我已将 project2 的引用添加到 project1,但它仍然不起作用。然后我卸载了 project1,将其从解决方案中删除。然后我再次添加它,从 project2 和 ta da 中引用...它起作用了..... :-)

于 2014-10-27T02:15:24.343 回答