none
Microsoft.VC80.CRT.manifest中如何更改版本号 RRS feed

  • 问题

  • 我使用VS.NET 2005 编译了几十个EXE文件.用到了Microsoft.VC80.CRT.manifest文件,他指定了3个DLL文件
    但 是后来我的编译机器安装了微软新的补丁,DLL更新了 Microsoft.VC80.CRT.manifest文件的版本号也提高了.
    之后我更 改了十几个EXE文件中的一个EXE文件.
    结果这个EXE文件的Microsoft.VC80.CRT.manifest版本号和之前编译的几十 个EXE的版本号都不一样了导致这个EXE没法正常运行.
    我现在知道更新的DLL的名字.想把它替换回旧的版本.但是使用VS.NET编译出的东 西还是标示着高版本的Microsoft.VC80.CRT.manifest.
    请问我应该如何操作才能把VS.NET指定的 Microsoft.VC80.CRT.manifest 文件版本降低.让新编译的EXE可以和之前编译的EXE共用一个Microsoft.VC80.CRT.manifest文件呢?
    谢谢
    Langrisser
    2010年6月1日 5:07

答案

全部回复

  • 不是随你的程序发布CRT么?你原来的CRT怎么发布到计算机上的?

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年6月1日 13:16
    版主
  • 原来的几十个EXE在同一个目录中 共用一个CRT.现在其中exe更新了,但是编译环境也更新了微软的最新补丁,导致编译环境的CRT也更新了.这样编译出来的exe所需版本号就需要是最新版本了,和其他原先的exe不同了.

    但是这些exe是同属于一个目录用的是一个crt manifest文件,就导致了冲突了了.

     


    Langrisser
    2010年6月2日 13:17
  • 不能共用两个CRT?CRT可以共存的

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年6月2日 13:50
    版主
  • 一个目录下只能有一个 Microsoft.VC80.CRT.manifest 阿这个manifest里面标示了 crt的版本吧? 难道说一个 Microsoft.VC80.CRT.manifest 里面可以写两个版本么?

    比如这句 : “<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>”

    一个Microsoft.VC80.CRT.manifest 只能有一个吧?


    Langrisser
    2010年6月3日 1:17
  • 可以有两个,只要DLL不把一个CRT的对象当作另外一个CRt的就可以。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年6月3日 2:53
    版主
  • 请问应该如何写 这个 manifest呢?

    我现在的manifest是这样写的:

    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <noInheritable></noInheritable>
        <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
        <file name="msvcr80.dll" hash="***" hashalg="SHA1"><*******>
        <file name="msvcp80.dll" hash="***" hashalg="SHA1"><*******>
        <file name="msvcm80.dll" hash="***" hashalg="SHA1"><*******>
    </assembly>

    请问如何给这一个manifest中写入两个crt的版本呢?谢谢

     


    Langrisser
    2010年6月4日 1:43
  • 再加一个assembly啊

    也可以用代码自动生成,参考http://stackoverflow.com/questions/110249/building-and-deploying-dll-on-windows-sxs-manifests-and-all-that-jazz



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年6月4日 4:59
    版主
  • 谢谢您的回答
    Langrisser
    2010年6月7日 1:50