我正在尝试使用ikvmc从.jar创建.NET DLL,我希望它具有某些程序集属性。 ikvmc有一个-assemblyattributes
选项,我正在使用它,但程序集属性没有出现在程序集中。
这就是我正在做的事情。
我有一个Hello.java文件:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
我这样编译:{{1}}
我把它变成一个罐子:javac Hello.java
我生成核心库存根jar:jar cvf hello.jar Hello.class
我有一个AssemblyInfo.java文件:
ikvmstub mscorlib
我这样编译:{{1}}
然后我运行ikvmc来生成我的DLL:@cli.System.Reflection.AssemblyTitleAttribute.Annotation("My Assembly Title")
@cli.System.Reflection.AssemblyProductAttribute.Annotation("My Assembly Product")
@cli.System.Reflection.AssemblyCompanyAttribute.Annotation("My Assembly Company")
@cli.System.Security.AllowPartiallyTrustedCallersAttribute.Annotation
interface AssemblyInfo {}
这生成了hello.dll,然后我使用ildasm检查并且指定的属性不存在。
IKVM版本为8.0.5449.1。
任何人都可以帮我找出我做错了吗?
答案 0 :(得分:2)
好的,既然没有人加紧回答这个问题,我下载了IKVM源代码并带着调试器前往城镇。
事实证明,IKVM会悄悄地忽略它无法找到类的任何注释,而不会报告错误或警告。它无法找到这些注释的原因是它们是在mscorlib.dll中定义的,您必须在命令行的引用中明确包含这些注释。
在我给出的示例中成功应用注释的正确命令是:
ikvmc -target:library -assemblyattributes:AssemblyInfo.class -r:mscorlib.dll hello.jar