摘要
如何创建与重定向程序集相同的框架版本的发行者策略程序集?
TL;DR
我有一个带有版本Assembly.dll的1.x.y.0,我还为它提供了一个名为policy.1.0.Assembly.dll的发布策略,它将版本1.0.0.0-1.x.y.0重定向到1.x.y.0。
Assembly.dll的目标是.NET Framework3.5。我认为policy.1.0.Assembly.dll也应该以.NET Framework3.5为目标,以便在所有框架( 3.5+ )上正确地工作,对吗?如果是,我如何创建这样的发行者策略程序集?我看不到程序集链接器(AL)上任何相关的命令行开关。
当前,当我访问程序集时,Assembly.dll在\Windows\assembly中结束,policy.1.0.Assembly.dll在\Windows\Framework.NET\assembly中结束。ILDASM向我展示了目标运行时不同:
Assembly.dll
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.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 ) // .z\V.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
}发布于 2017-04-11 21:41:17
使用C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin中的程序集链接器似乎会生成一个policy.1.0.Assembly.dll,该policy.1.0.Assembly.dll的目标是正确的运行时:
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.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一起提供多长时间。卢西恩的VBlog帮助我理解SDK工具是如何组织的:
https://blogs.msdn.microsoft.com/lucian/2008/11/14/where-are-the-sdk-tools-where-is-ildasm/
https://stackoverflow.com/questions/43354540
复制相似问题