总结
如何创建面向与重定向程序集相同的框架版本的发布者策略程序集?
博士
我有一个版本1.x.y.0
的Assembly.dll
,我还有一个名为 policy.1.0.Assembly.dll
的发布者策略,该策略将版本 1.0.0.0-1.x.y.0
重定向到 1.x.y.0
。
该Assembly.dll
面向.NET Framework 3.5。我是否正确认为policy.1.0.Assembly.dll
也应该面向.NET Framework 3.5,以便在所有框架3.5+上正常工作?如果是,如何创建此类发布者策略程序集?我在程序集链接器(AL
(上看不到任何相关的命令行开关。
目前,当我GAC程序集时,Assembly.dll
最终以Windowsassembly
结束,policy.1.0.Assembly.dll
最终以WindowsFramework.NETassembly
结束。ILDASM 向我展示了目标运行时是不同的:
Assembly.dll
:
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .zV.4..
.ver 2:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .zV.4..
.ver 2:0:0:0
}
policy.1.0.Assembly.dll
:
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .zV.4..
.hash = (B6 24 5D 64 2D 23 95 0B 50 19 B4 DC 19 4B 9A E8 // .$]d-#..P....K..
B9 FF C0 53 ) // ...S
.ver 4:0:0:0
}
使用 C:Program Files (x86)Microsoft SDKsWindowsv7.0ABin
中的程序集链接器似乎会生成面向正确运行时的policy.1.0.Assembly.dll
:
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .zV.4..
.hash = (15 3B C0 4F 38 2D 09 20 CC A2 58 01 EE B1 AB E2 // .;.O8-. ..X.....
D2 D0 C5 11 )
.ver 2:0:0:0
}
虽然这似乎符合我的意愿,但目前尚不清楚:
- 这实际上是必要的。
- 较旧的
AL.EXE
将随Visual Studio一起提供多长时间。
Lucian的VBlog有助于我了解SDK工具的组织方式:
https://blogs.msdn.microsoft.com/lucian/2008/11/14/where-are-the-sdk-tools-where-is-ildasm/