15

我正在使用 IKVM 在我正在使用的 Mono 项目中获取 SVNKit,我有一个实现 SVNKit 接口的类,但我无法编译:

在 Windows 和 .NET 上,一切都编译得很好,只是在 Mono 上得到这个。

/home/nubela/Workspace/subsync/subsync/Core/Subversion/PropGetHandler.cs(22,22): 错误 CS0535: Subsync.Core.Subversion.PropGetHandler' does not implement interface member org.tmatesoft.svn.core.wc.ISVNPropertyHandler.__<clinit>()` (CS0535) (子同步)

我用谷歌搜索__<clinit>()了方法,它似乎是从 IKVM 编译的 Java 库中基类的初始化方法。

我现在不知道如何进行,有什么想法吗?:)

4

4 回答 4

1

我将在很多反对意见中冒险并提出另一种解决方案,也就是说,在我看来,更好......我真的不明白你为什么在.NET应用程序中使用Java库,如果有的话是 .NET 中的许多替代品,也是很好的替代品。

为什么不使用 .NET 原生的 svn 库,比如Svn.NET?它会快得多。如果您有使用 SVNKit 的现有代码,则可以将其转换为 Svn.NET 或为此创建一些包装器。

鱼不能在水外生活,对吧?它只能生活在它的自然环境中,水。因此,SVNKit 应该生活在它的自然环境中...... Java,而不是 .NET。.NET 中的 SVNKit 就像火星上的人类一样,没关系,但我更喜欢地球上的人类。

Svn.NET 支持以下平台:

  • Win32 上的 .NET 2.0
  • Win32 上的 Mono(2.0 框架)
  • Linux 上的 Mono(2.0 框架)

请注意,.NET/Mono 3.5 只是 2.0 的扩展,因此它可以在 3.5 上运行。

为什么会变得纠缠不清?这对你来说会容易得多。

于 2010-03-21T06:31:20.973 回答
0

如果您可以访问 Java 库中的代码,那么您可以正确实现方法 __()。

方法 void __() {} - 编译得很好。如果这无济于事,您能否提供重现错误的代码示例?

于 2010-03-10T08:33:55.073 回答
0

我要在这里问一个明显的问题......但是你是否通过 moma http://www.mono-project.com/MoMA运行你的代码?我还遇到了一些非常奇怪的编译器错误,这些错误是由细微的不兼容性(核心方法未实现等)引起的。

于 2010-03-17T19:51:11.907 回答
0

由于您的类可以使用 Microsoft 的编译器构建,因此这一定是 Mono 编译器或运行时中的错误。

您可以在任何平台上将使用 Microsoft 编译器构建的程序集与 Mono 一起使用。

我可以建议两种解决方法:

a)在 Windows 上构建一个辅助程序集 svnkitutil.dll。这将包含默认实现ISVNPropertyHandler和任何其他有问题的接口。然后,您将通过继承默认实现来实现接口。

这可能仍然会因同样的问题而失败。

b)修改 Java 源代码以删除接口 ( ISVNPropertyHandler.NULL) 中的静态字段。

如果这是整个 SVNKit 的常见模式,这可能需要做很多工作。

于 2010-03-14T16:22:31.770 回答