如何构建两个二进制文件 .net core 2 控制台应用程序
How to build two binaries .net core 2 console app
我是 .Net Core 和 c sharp 的新手。我想在同一个命名空间中构建两个二进制文件。它是两个控制台应用程序,一个服务器和一个客户端。我想分享一些像 "Scores" 这样的对象并这样思考。实际上我已经创建了两个应用程序(通过 "dotnet new console" 命令)但我可以更改并重新开始。我在一个 docker 容器内工作,里面有一个简单的文本编辑器 (emacs)。那里没有 visual studio 或 visual studio 代码 :)
可以吗?
编辑:
好的,我会尝试更精确。我必须创建两个程序:一个是服务器,另一个是客户端。必须连接客户端才能玩游戏(多人游戏)。我是否必须创建两个不同的项目(使用它们自己的 namespaces/types/tests)或者我可以创建一个简单的项目(只需调用一次 "dotnet new console" 命令)并共享相同的命名空间,在服务器和客户端之间共享一些类型(比如分数 class)和测试?这是我当前的目录(客户端和服务器是通过 "donet new console" 命令创建的两个目录:
├── README.md
├── client
│ ├── client.csproj
│ ├── obj
│ │ ├── client.csproj.nuget.cache
│ │ ├── client.csproj.nuget.g.props
│ │ ├── client.csproj.nuget.g.targets
│ │ └── project.assets.json
│ └── srcs
│ ├── Program.cs
│ └── Types
│ └── user.cs
├── docs
│ ├── rfc
│ │ └── donotremove
│ ├── text
│ │ └── donotremove
│ └── uml
│ └── donotremove
├── server
│ ├── obj
│ │ ├── project.assets.json
│ │ ├── server.csproj.nuget.cache
│ │ ├── server.csproj.nuget.g.props
│ │ └── server.csproj.nuget.g.targets
│ ├── server.csproj
│ └── srcs
│ ├── Program.cs
│ └── Types
│ └── server.cs
└── tests
└── tests.cs
如果我对问题的理解正确,你所要做的就是在每个 class.
上更改名称空间
例如,假设您的一个二进制文件名为 Yourappname.Server
,另一个名为 Yourappname.Client
。
如果我们假设您需要共享的公共名称空间是 Yourcompany.Yourapp
。然后只需将 classes 的命名空间更改为 Yourcompany.Yourapp
。它会完成工作。
还有一个提示..您甚至可以使用 using 语句使用 import 语句在其他命名空间中导入 classes,或者可以在命名空间中使用完全限定的 class 名称。
using Yourcompany.Yourapp;
或
Yourcompany.Yourapp.Score score =new Yourcompany.Yourapp.Score();
无论如何,在这两种情况下,您都需要添加对 binaries.You 的引用,可以使用 .csproj 文件做到这一点。
<ItemGroup>
<ProjectReference Iclude="path to .csproj" />
</ItemGroup>
我是 .Net Core 和 c sharp 的新手。我想在同一个命名空间中构建两个二进制文件。它是两个控制台应用程序,一个服务器和一个客户端。我想分享一些像 "Scores" 这样的对象并这样思考。实际上我已经创建了两个应用程序(通过 "dotnet new console" 命令)但我可以更改并重新开始。我在一个 docker 容器内工作,里面有一个简单的文本编辑器 (emacs)。那里没有 visual studio 或 visual studio 代码 :)
可以吗?
编辑: 好的,我会尝试更精确。我必须创建两个程序:一个是服务器,另一个是客户端。必须连接客户端才能玩游戏(多人游戏)。我是否必须创建两个不同的项目(使用它们自己的 namespaces/types/tests)或者我可以创建一个简单的项目(只需调用一次 "dotnet new console" 命令)并共享相同的命名空间,在服务器和客户端之间共享一些类型(比如分数 class)和测试?这是我当前的目录(客户端和服务器是通过 "donet new console" 命令创建的两个目录:
├── README.md
├── client
│ ├── client.csproj
│ ├── obj
│ │ ├── client.csproj.nuget.cache
│ │ ├── client.csproj.nuget.g.props
│ │ ├── client.csproj.nuget.g.targets
│ │ └── project.assets.json
│ └── srcs
│ ├── Program.cs
│ └── Types
│ └── user.cs
├── docs
│ ├── rfc
│ │ └── donotremove
│ ├── text
│ │ └── donotremove
│ └── uml
│ └── donotremove
├── server
│ ├── obj
│ │ ├── project.assets.json
│ │ ├── server.csproj.nuget.cache
│ │ ├── server.csproj.nuget.g.props
│ │ └── server.csproj.nuget.g.targets
│ ├── server.csproj
│ └── srcs
│ ├── Program.cs
│ └── Types
│ └── server.cs
└── tests
└── tests.cs
如果我对问题的理解正确,你所要做的就是在每个 class.
上更改名称空间例如,假设您的一个二进制文件名为 Yourappname.Server
,另一个名为 Yourappname.Client
。
如果我们假设您需要共享的公共名称空间是 Yourcompany.Yourapp
。然后只需将 classes 的命名空间更改为 Yourcompany.Yourapp
。它会完成工作。
还有一个提示..您甚至可以使用 using 语句使用 import 语句在其他命名空间中导入 classes,或者可以在命名空间中使用完全限定的 class 名称。
using Yourcompany.Yourapp;
或
Yourcompany.Yourapp.Score score =new Yourcompany.Yourapp.Score();
无论如何,在这两种情况下,您都需要添加对 binaries.You 的引用,可以使用 .csproj 文件做到这一点。
<ItemGroup>
<ProjectReference Iclude="path to .csproj" />
</ItemGroup>