1

我在此示例中遵循orleans 示例,而不是在同一应用程序域中同时运行筒仓和客户端,它们正在遍历,以便两者都可以独立启动。我按照建议进行了更改。我修改了 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:来自程序集'GrainCollection1 ...'的'GrainCollection1.Grain1'类型中的方法'SayHello'

界面和颗粒定义都匹配。我在这里缺少一些简单的东西吗?

4

1 回答 1

4

查看 c:\Microsoft Codename Orleans SDK v0.9\SDK\LocalSilo\Applications。CodeGen 为每个奥尔良项目建立一个文件夹。当本地筒仓启动时,初始化程序会扫描此目录中的程序集。

尝试删除 ../Applications 中的文件夹并重建您的解决方案。您应该看到使用重建的粒度和接口 DLL 重新创建的项目文件夹。

在 DevTestServerConfiguration.xml 中,将 Tracing/DefaultTraceLevel 从“Warning”更改为“Info”。当您运行 InitSilo 时,您会看到筒仓正在寻找什么以及它抛出的错误。这将我指向 SDK silo 文件夹。

编辑:您可能还需要删除 ..\SDK\Binaries 中的文件夹。确保在删除后立即重建整个项目。

于 2014-11-10T20:06:53.840 回答