Я пытаюсь создать игру Nim, где логика происходит на сервере, а клиент представляет игру, чтобы лучше работать на .NET Remoting , У меня есть библиотеки DLL, я построил из этой библиотеки классов:Необработанное исключение типа «System.IO.FileNotFoundException» - Dll & remoting
namespace Nim_Common
{
public interface computerCommon
{
int[] startGame(int columnNumber);
int[] computeTurn(int[] penStatus);
bool checkWin();
}
}
этой библиотеку я добавляю в качестве ссылки на мой проект клиента и мой проект сервера и добавить DLL в каталог bin/Debug в каждом проекте.
Это соответствующая часть моего кода клиента:
using Nim_Common;
namespace Nim
{
public partial class Form1 : Form
{
private computerCommon computerServerHandler;
...
public Form1()
{
InitializeComponent();
computerToolStripMenuItem.Select();
newColumnNumber = -1;
RemotingConfiguration.Configure("client.exe.config");
computerServerHandler = (computerCommon)Activator.GetObject(typeof(computerCommon), "http://localhost:1234/_Server_");
StartGame(this, null);
}
private void StartGame(object sender, EventArgs e)
{
int max = 0;
if(columns != null)
for (int i = 0; i < columns.Length; i++) Controls.Remove(columns[i]);
int[] temp = computerServerHandler.startGame(newColumnNumber);
columns = new Column[temp.Length];
...
}
И в серверной части:
using Nim_Common;
namespace Nim_Server
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
RemotingConfiguration.Configure("server.exe.config");
}
}
class ServerPart : MarshalByRefObject, computerCommon
{
...
public ServerPart()
{
...
}
public int[] startGame(int columnNumber)
{
...
}
public int[] computeTurn(int[] penStatus)
{
...
}
public bool checkWin()
{
...
}
}
}
server.exe.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.runtime.remoting>
<application>
<channels>
<channel ref="http server" port="1234" />
</channels>
<service>
<wellknown mode ="SingleCall" type="Nim_Server.ServerPart, Nim_Server" objectUri="_Server_" />
</service>
</application>
</system.runtime.remoting>
</configuration>
Client.exe .config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.runtime.remoting>
<application>
<channels>
<channel ref="http client" />
</channels>
<client>
<wellknown type="Nim_Common.computerCommon, Nim_Common" url="http://localhost:1234" />
</client>
</application>
</system.runtime.remoting>
</configuration>
Мой брандмауэр выключен, если это имеет значение. Все в порядке во время компиляции, сервер работает нормально. Когда клиент достигает этой линии, он бросает исключение:
int[] temp = computerServerHandler.startGame(newColumnNumber);
Исключение составляет что-то вроде:
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
Additional information: Could not load file or one of its dependencies, the system could not find "Nim_Common". // This is shown in my native language so I'm improvising a bit with the translation.
Что происходит и как это исправить?
Спасибо.