代码之家  ›  专栏  ›  技术社区  ›  Brent Arias

使用清单工具(mt.exe)更改“非托管程序集”的“版本”

  •  2
  • Brent Arias  · 技术社区  · 14 年前

    现在本机代码可以有程序集(例如“ unmanaged assembly )对于并行缓存使用,我感兴趣的是在构建DLL后更改其版本(作为增量构建自动版本控制方案的一部分)。我认为我即将使用以下命令:

    mt -updateresource:MyNewlyBuiltThing.dll;#2 -identity:"MyNewlyBuiltThing, version=5.5.0.1"

    该命令给出了以下错误:

    mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file "MyNewlyBuiltThing.dll". Access is denied.

    该命令是在具有管理员权限的命令提示符下执行的,我的开发框中没有防病毒软件(并且文件没有只读标志集)。

    也许问题是我在标识字符串中使用了错误的名称。毕竟,当我将二进制文件的嵌入式资源加载到VisualStudio中时,它会显示一个清单,而不必提及它的名称——它只提及依赖项的名称。

    不管怎样,我只是想知道mt.exe是否可以被哄骗,让我获得非托管程序集的编译后版本碰撞。知道我做错了什么吗?如果这不可能,为什么?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Eugene Talagrand    13 年前

    如果排除了权限问题:

    你是在一个胖文件系统上运行吗?如果不是在NTFS上,可能会有问题。此外,最新的mt.exe版本中也出现了一些此类问题 "Microsoft Windows SDK for Windows 7 and .NET Framework 4", version 7.1 所以你可以试试。