如何让 IKVM 编译器应用程序集属性
How do I make IKVM compiler apply assembly attributes
我正在尝试使用 ikvmc 从 .jar 创建 .NET DLL,我希望它具有特定的程序集属性。 ikvmc 有一个 -assemblyattributes
选项,我正在使用它,但程序集属性没有出现在程序集中。
这是我正在做的。
我有一个 Hello.java 文件:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
我是这样编译的:javac Hello.java
我把它变成一个罐子:jar cvf hello.jar Hello.class
我生成了核心库存根 jar:ikvmstub mscorlib
我有一个 AssemblyInfo.java 文件:
@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 {}
我这样编译:javac -cp mscorlib.jar AssemblyInfo.java
然后我 运行 ikvmc 生成我的 DLL:ikvmc -target:library -assemblyattributes:AssemblyInfo.class hello.jar
这生成了 hello.dll,然后我使用 ildasm 检查并发现指定的属性不存在。
IKVM 版本为 8.0.5449.1。
谁能帮我找出我做错了什么?
好吧,由于没有人站出来回答这个问题,我下载了 IKVM 源代码并带着调试器去了镇上。
事实证明,IKVM 会安静地忽略它找不到 class 的任何注释,而不会报告错误或警告。它找不到这些注释的原因是它们在 mscorlib.dll 中定义,您必须在命令行的引用中明确包含它们。
在我给出的示例中成功应用注释的正确命令是:
ikvmc -target:library -assemblyattributes:AssemblyInfo.class -r:mscorlib.dll hello.jar
我正在尝试使用 ikvmc 从 .jar 创建 .NET DLL,我希望它具有特定的程序集属性。 ikvmc 有一个 -assemblyattributes
选项,我正在使用它,但程序集属性没有出现在程序集中。
这是我正在做的。
我有一个 Hello.java 文件:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
我是这样编译的:javac Hello.java
我把它变成一个罐子:jar cvf hello.jar Hello.class
我生成了核心库存根 jar:ikvmstub mscorlib
我有一个 AssemblyInfo.java 文件:
@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 {}
我这样编译:javac -cp mscorlib.jar AssemblyInfo.java
然后我 运行 ikvmc 生成我的 DLL:ikvmc -target:library -assemblyattributes:AssemblyInfo.class hello.jar
这生成了 hello.dll,然后我使用 ildasm 检查并发现指定的属性不存在。
IKVM 版本为 8.0.5449.1。
谁能帮我找出我做错了什么?
好吧,由于没有人站出来回答这个问题,我下载了 IKVM 源代码并带着调试器去了镇上。
事实证明,IKVM 会安静地忽略它找不到 class 的任何注释,而不会报告错误或警告。它找不到这些注释的原因是它们在 mscorlib.dll 中定义,您必须在命令行的引用中明确包含它们。
在我给出的示例中成功应用注释的正确命令是:
ikvmc -target:library -assemblyattributes:AssemblyInfo.class -r:mscorlib.dll hello.jar