如何将一个C#项目中的类与另一个C#项目一起使用

时间:2010-08-24 08:23:57

标签: c# visual-studio

在同一个解决方案中,我有两个项目:P1和P2。如何在P2中使用P1类?

10 个答案:

答案 0 :(得分:164)

  1. 在“解决方案资源管理器”树中,展开P2项目,然后右键单击项目并从菜单中选择“添加参考”。
  2. 在“添加引用”对话框中,选择“项目”选项卡,然后选择P1项目。
  3. 如果您使用的是名称空间,则需要通过在P2中的文件中添加“using”语句来导入P1类型的名称空间。
  4. 请注意,您希望直接访问的P1类型必须具有足够的访问级别:通常这意味着它们必须公开。

答案 1 :(得分:64)

只需在P2中添加对P1的引用

答案 2 :(得分:13)

Paul Ruane是对的,我刚刚尝试自己构建项目。 我刚刚制作了一个完整的SLN来测试它是否有效。

我在VC#VS2008

中做了这个

<< (只是帮助其他人阅读此内容以及()评论)

步骤1:

制作名为DoubleProject的解决方案

步骤2:

在名为DoubleProjectTwo的解决方案中制作项目(为此选择解决方案文件,右键单击 - >添加 - >新项目)

我现在在同一个解决方案中有两个项目

步骤3:

正如Paul Ruane所说。转到解决方案资源管理器中的引用(如果在编译器的视图选项卡中关闭它)。 DoubleProjectTwo是需要DoubleProject的函数/方法的,所以在DoubleProjectTwo右鼠标参考那里 - >添加 - >项目 - > DoubleProject。

步骤4:

  

包含指令   名称空间:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DoubleProject; <------------------------------------------

namespace DoubleProjectTwo
{
    class ClassB
    {
        public string textB = "I am in Class B Project Two";
        ClassA classA = new ClassA();


        public void read()
        {
            textB = classA.read();
        }
    }
}

步骤5:

  

让某些东西给我证明   结果:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DoubleProject
{
    public class ClassA    //<---------- PUBLIC class
    {
        private const string textA = "I am in Class A Project One";

        public string read()
        {
            return textA;
        }
    }
}
  

主要

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DoubleProjectTwo;  //<----- to use ClassB in the main

namespace DoubleProject
{
    class Program
    {
        static void Main(string[] args)
        {
            ClassB foo = new ClassB();

            Console.WriteLine(foo.textB);
            Console.ReadLine();
        }
    }
}

那应该做的伎俩

希望这有帮助

编辑:::哎呀忘了实际更改字符串的方法调用,不要这样做:)

答案 3 :(得分:6)

第一步是通过执行以下操作使P2参考P1

  • 右键单击项目并选择“添加参考”
  • 转到“项目”标签
  • 选择P1并点击确定

接下来,您需要确保P2可以访问P1中的类。最简单的方法是让它们public

public class MyType { ... }

现在,您应该可以通过其完全限定名称在P2中使用它们。假设P1的名称空间是Project1,那么以下内容将起作用

Project1.MyType obj = new Project1.MyType();

首选的方法是为Project1添加一个使用,这样您就可以使用没有限定条件的类型

using Project1;
...

public void Example() {
  MyType obj = new MyType();
}

答案 4 :(得分:4)

在项目P1中,将该类设为公共(如果尚未公开)。然后向P2添加项目引用(而不是文件引用,偶尔会遇到的错误)。在P2中的正确位置添加using语句并开始使用P1中的类。

(要提到这一点:公开课程的替代方法是让P2成为P1的朋友。但是,这不太可能是你所追求的答案,因为它会产生一些后果。所以坚持以上建议。)

答案 5 :(得分:2)

如果在一个解决方案文件夹中有两个项目。只需将项目的引用添加到另一个。使用命名空间,您可以获取类。在为需要的类创建对象时。调用您想要的方法。

FirstProject:

class FirstClass()
{
   public string Name()
   {
      return "James";
   }
}

这里添加对第二个项目的引用

SecondProject:

class SeccondClass
{
    FirstProject.FirstClass obj=new FirstProject.FirstClass();
    obj.Name();
}

答案 6 :(得分:2)

假设项目2中的类名为MyClass。

显然,首先在项目1中引用项目2,然后

using namespaceOfProject2;

// for the class calling bit:

namespaceOfProject2.MyClass project2Class = new namespaceOfProject2.MyClass();

因此,无论何时您想引用该类,都要键入project2Class。另外,请确保课程也是公开的。

答案 7 :(得分:1)

我对不同的目标框架有疑问。

我所做的一切都正确,但是无法使用P2中的引用。 在为P1和P2设置了相同的目标框架之后,它就像一个魅力。

希望它将对某人有所帮助

答案 8 :(得分:0)

提供另一个更简单的解决方案:-

  1. 在项目中,右键单击并选择“添加->现有”
  2. 导航到相邻项目中的类文件。
  3. “添加”按钮也是一个下拉菜单,请单击下拉菜单并选择

“添加为链接”

就这样。

答案 9 :(得分:0)

您需要右键单击您的项目并选择 // Generated using webpack-cli http://github.com/webpack-cli import path from 'path' export default { target: 'node', mode: 'production', entry: './src/test.ts', output: { path: 'D:/asant/Desktop/myproject/bundle', }, plugins: [ // Add your plugins here // Learn more obout plugins from https://webpack.js.org/configuration/plugins/ ], module: { rules: [ { test: /\.(ts|tsx)$/, loader: 'ts-loader', exclude: ['/node_modules/'], }, { test: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/, type: 'asset', }, // Add your rules for custom modules here // Learn more about loaders from https://webpack.js.org/loaders/ ], }, resolve: { extensions: ['.tsx', '.ts', '.js'], }, } 并勾选您要引用的项目。

此操作的结果应在项目树的引用部分下显示引用的项目。

一个常见用例涉及向您的解决方案添加测试框架,例如 NUnit 项目。这个 NUnit 项目然后需要引用您的主项目。为此,步骤略有不同: 您需要右键单击您的 NUnit 项目并选择 add -> Reference... -> Projects 并勾选您要引用的项目。

此操作的结果应在 NUnit 项目树的“项目”部分下显示引用的项目。