0

概括

如何创建以与重定向程序集相同的框架版本为目标的发布者策略程序集?

TL;博士

我有一个Assembly.dllwith 版本1.x.y.0,我也有一个发布者策略,命名为policy.1.0.Assembly.dll将版本重定向1.0.0.0-1.x.y.01.x.y.0.

目标是Assembly.dll.NET Framework 3.5。我是否认为policy.1.0.Assembly.dll应该以 .NET Framework 3.5 为目标,以便在所有框架 3.5+ 上正常工作?如果是,我该如何创建这样的发布者策略程序集?AL我在 Assembly Linker ( )上看不到任何相关的命令行开关。

目前,当我 GAC 程序集时,Assembly.dll最终以. ILDASM 向我展示了目标运行时不同:\Windows\assemblypolicy.1.0.Assembly.dll\Windows\Framework.NET\assembly

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
}
4

1 回答 1

0

使用 Assembly Linker fromC:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin似乎会产生一个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 Studio 一起提供多长时间。

Lucian 的 VBlog 帮助我了解了 SDK 工具的组织方式:

https://blogs.msdn.microsoft.com/lucian/2008/11/14/where-are-the-sdk-tools-where-is-ildasm/

于 2017-04-11T21:41:17.393 回答