我在我的解决方案中添加了一个项目Project2。它已经有另一个项目让我们说项目1.如何从project2调用类和方法到project1?
我做了什么:
我有Project 1及其解决方案。我将Project 2添加到了Project 1的解决方案中。项目1和项目2都有一个名为Correction的命名空间。现在,我打电话使用更正。但是,在Project 1中输入Project2会给我一个错误,因为它声称它不知道它是什么。
我还添加了项目2作为参考。
感谢所有的答案。我不知道我做错了什么
首先,您需要在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
您必须指定要尝试调用的代码的“路径”。你可以通过任何一个来完成
1)指定要使用的第二个项目/类的名称空间,通常位于代码文件的顶部。
using MySecondProject;
var foo = new ClassFromSecondProject();
2)明确指定要使用的类的名称,包括其名称空间
//do stuff
var foo = new MySecondProject.ClassFromSecondProject();
//do more stuff
您只需要将Project1中的引用添加到Project 2.您可以通过右键单击解决方案资源管理器窗格中的References
文件夹来执行此操作,然后可以使用Browse
选项查找Project2。或者,如果它已添加到解决方案中,您只需使用Projects
选项卡即可。
只是为了清楚这一点。将项目添加到Solution
与添加引用不同。在Visual Studio中打开Project2。然后将Project1添加到解决方案中,或者右键单击Project2中的References
文件夹并添加对Project1的引用。为确保您已正确添加引用,请展开references文件夹并验证您是否可以在列表中看到Project1
。
例
创建一个新的控制台应用程序并将其命名为MyApplication
。然后右键单击Solution
并选择Add New Project
选项并创建一个新的库项目并将其命名为MyLib
。此时,您只需向1解决方案添加2个项目,每个项目之间没有创建任何引用。
右键单击References
项目下的MyApplication
文件夹,然后选择Add Reference...
。由于MyLib
已经是解决方案的一部分,您可以转到Projects
选项卡并从列表中选择MyLib
,这将在MyApplication
中创建对此项目的新引用。如果它不是解决方案的一部分,您可以使用Browse
选项卡并通过资源管理器找到项目。
所以在这一点上,我们在MyApplication
内部建立了一个引用到MyLib
。因此,为了在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();
}
}
}
希望能为你清理一下。
我只是遇到了同样的问题。我对所有内容进行了三重检查,并添加了引用,项目在同一个解决方案中,一切都已设置好我也知道我的命名空间,我甚至得到了代码完成,但在构建时,我得到了无法找到命名空间的相同错误。
我花了一个小时来找到它:我添加的项目,没有找到相应的命名空间,被设置为不同的.NET目标框架。我将我的解决方案更改为“完整”.NET Framework 4而不是客户端配置文件4,但我添加的新项目再次设置为客户端配置文件。
它没有给我一个关于错误配置的正确警告,而是声称无法找到命名空间。
希望这可以帮助某人,并为您节省我浪费的时间。
选择您将使用的项目(例如project1),在解决方案资源管理器中右键单击它,然后单击“添加引用”。
您将能够从那里添加对其他解决方案的引用(project2)。
您所要做的就是在主项目(project1)中添加一个using语句,您将能够正常访问它。
我没有足够的代表来支持汤姆的答案,但它对我帮助很大。此外,您必须选择与.NET Framework相同的subversion(此外,它是相同的完整/核心/标准等)。我在测试项目中指定了4.5并且得到了这个错误,将其更改为4.6.1(与其他项目相同)修复了此问题。
您需要将Project 2添加到Project1的引用。现在,您可以从Project 2访问类。不要忘记添加正确的命名空间!
如其他人所述,您需要将(现有)项目添加到解决方案中。然后,您需要在解决方案 - >项目下添加对它们的引用。现在,它们应该在对象浏览器中显示其命名空间。
还有一件事你需要确定,这需要我进行一些实验才能找到答案。每当我添加第二个项目时,第一个项目停止工作,错误消息与项目错过引用时相同(“找不到类型或命名空间名称'Ber'(您是否缺少using指令或装配参考?)“)。问题是两个项目在项目属性 - >应用程序中具有相同的默认程序集名称(“类库”)。所以给他们独特的名字。我使用与Default命名空间相同的名称。
我遇到了同样的问题。我无法从project2中检测到project1。我已经从project2添加了对project1的引用,但它仍然无效。然后我卸载了project1,将其从解决方案中删除。然后我再次添加它,从project2和ta da做了参考...它工作..... :-)