1)我有一个名为SocketServer的项目,其中有一个Class Room ,这个项目是一个编译的exe,也可以编译为DLL。
2)在另一个名为MyGame的项目中,有一个名为MyAwesomeGame的类,我需要做一些类似的事情:
public class MyAwesomeGame
{
public Init(Room room)
{
//I can get data from Room
}
}
现在,MyGame Project被编译成MyGame.DLL,并放置在相对于SocketServer.exe的某个地方,SocketServer.exe在运行时加载MyGame.DLL并实例化MyAwesomeGame类并调用Method Init并将room作为参数传递。代码是SocketServer项目类似于:
public class Room
{
private InstantiateGameRoom()
{
//Load External MyGame.DLL Assembly
Task<MyAwesomeGame> task = Task<MyAwesomeGame>.Factory.StartNew(() => (MyAwesomeGame)Activator.CreateInstance(classType, new object[] { this }));
MyAwesomeGame instance = task.result;
instance.init(this);
}
}
所以我的问题是如何在MyGame项目中引用Class room ?我应该添加我的SocketServer项目的引用吗?如果我这样做,它会不会被我的MyGame.dll编译?
p.s:我还打算将socketserver.dll作为API分发给第三方用户。
答案 0 :(得分:5)
您应该将SocketServer生成的dll添加到MyGame项目的引用中。右键单击MyGame,单击Add,单击References ...,在对话框中选择Projects并选择SocketServer项目。
我认为确保SocketServer是MyGame项目的依赖性以确保在MyGame之前构建SocketServer也是明智的。
- 编辑:请阅读我在Sushant澄清之后做出的评论。或直接去Sid的回答。 : - )
答案 1 :(得分:2)