IKVM 和 System.Core System.Runtime.CompilerServices.ExtensionAttribute

发布于 2024-07-15 23:08:08 字数 759 浏览 8 评论 0原文

我正在使用最新版本的 IKVM 将 Java .jar 文件“编译”为 .NET DLL。 一切正常,现在我尝试在 .NET 3.5 C# 项目中引用 DLL。

在我的 C# 项目中,我创建了一个静态“StringExtensions”类,其中包含字符串扩展方法。

由于某种原因,这似乎昨天有效,但今天,我的扩展类出现构建错误(不确定昨天这是如何工作的......)。

Missing compiler required member System.Runtime.CompilerServices.ExtensionAttribute..ctor

还有构建警告:

The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\TEMP\IKVM.Runtime.dll'

我发现 IKVM.Runtime.dll 和 System.Core.dll (3.5 版本)具有相同的类型:“System.Runtime.CompilerServices.ExtensionAttribute”

由于命名空间相同,我该如何让它与 System.Core 版本的 ExtensionAttribute 一起编译(或者我该如何解决这个问题)?

谢谢

I'm using the latest release of IKVM to "compile" a Java .jar file into a .NET DLL. That all worked fine, and now I'm trying to reference the DLL in a .NET 3.5 C# project.

In my C# project, I've created an static "StringExtensions" class with an extension method on string.

For some reason this seemed to work yesterday, but today, I'm getting a build error on my extension class (not sure how this worked yesterday...).

Missing compiler required member System.Runtime.CompilerServices.ExtensionAttribute..ctor

And a build warning as well:

The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\TEMP\IKVM.Runtime.dll'

I discovered that both IKVM.Runtime.dll and System.Core.dll (3.5 version) have the same type: "System.Runtime.CompilerServices.ExtensionAttribute"

Since the namespace is the same, how can I get this to compile with the System.Core version of ExtensionAttribute (or how can I fix this)?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷鸟归林 2024-07-22 23:08:08

更新到 IKVM 0.40.0.1 解决了我的这个问题。

Updating to IKVM 0.40.0.1 fixed this problem for me.

时光暖心i 2024-07-22 23:08:08

如果您以 .Net 2.0 为目标,则只能在您自己定义此属性的情况下创建扩展方法。 在您迁移到 .Net 3.5 之前,这会非常有效。

我不知道“IKVM”,但唯一真正的解决方法是要求他们删除该属性并以 3.5 为目标。

If you target .Net 2.0 you can only create extension methods if you define this attribute yourself. This works great until you move to .Net 3.5.

I don't know "IKVM" but the only real fix is to ask them to remove the attribute and target 3.5.

阳光下慵懒的猫 2024-07-22 23:08:08

我也有同样的问题。

就我而言,问题出在程序集 Mono.Cecil 上。

从本地引用迁移到 nuget,当我添加 NHibernate 引用时,包会自动添加此引用。

该引用被删除,并再次编译我的项目。

您需要了解此实现才能解决您的问题。 必须移除两个组件之一。

此图像取自 ILSpy ( https://i.sstatic.net/Qyd5o.png )

I have the same problem.

In my case the problem was the assembly Mono.Cecil.

Migrating from local references to nuget, when i add NHibernate references the package automatically adds this reference.

This reference was removed, and compiled my project again.

You need do understand this implementation to solve your question. One of both assemblies must be removed.

This image was taken from ILSpy ( https://i.sstatic.net/Qyd5o.png )

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文