我正在关注此示例中的orleans example,而不是在同一应用域中同时运行silo和客户端,它们正在逐步完成,以便两者都可以独立启动。我按照建议进行了更改。我修改了IGrain1.cs以接受字符串作为参数
Task<string> SayHello(string greetings);
修改grain1.cs以实现如下代码
private string text = "Hello World!";
public Task<string> SayHello(string greetings)
{
var oldText = text;
text = greetings;
return Task.FromResult(oldText);
}
当我运行筒仓时,它仍然无法使用此错误启动筒仓
“TypeLoadException:方法'SayHello',类型'GrainCollection1.Grain1'来自程序集'GrainCollection1 ...'
接口和颗粒定义匹配。我在这里缺少一些简单的东西吗?
答案 0 :(得分:4)
查看c:\ Microsoft Codename Orleans SDK v0.9 \ SDK \ LocalSilo \ Applications。 CodeGen为每个Orleans项目构建一个文件夹。当本地silo启动时,初始化程序会扫描此目录以查找程序集。
尝试删除../Applications中的文件夹并重建您的解决方案。您应该看到使用重建的grain和接口DLL重新创建的项目文件夹。
在DevTestServerConfiguration.xml中,从&#34;警告&#34;更改Tracing / DefaultTraceLevel。到&#34;信息&#34;。当您运行InitSilo时,您将看到筒仓正在寻找什么以及它投掷的错误。这指向了SDK silo文件夹。
编辑:您可能还需要删除.. \ SDK \ Binaries中的文件夹。删除后,请务必立即重建整个项目。