代码之家  ›  专栏  ›  技术社区  ›  sourcenouveau

从VS2008升级到VS2010后,SGEN不工作

  •  6
  • sourcenouveau  · 技术社区  · 15 年前

    我最近刚刚将一个VS2008/.net3.5sp1项目升级到VS2010和.net4。

    "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\sgen.exe" /debug /force /verbose /c:"platform:x86" "C:\path\to\SomeAssembly.dll"
    Microsoft (R) Xml Serialization support utility
    [Microsoft (R) .NET Framework, Version 2.0.50727.3038]
    Copyright (C) Microsoft Corporation. All rights reserved.
    Error: An attempt was made to load an assembly with an incorrect format: c:\path\to\someassembly.dll.
      - Could not load file or assembly 'file:///c:\path\to\someassembly.dll'
    or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.
    
    If you would like more help, please type "sgen /?".
    

    从命令行运行SGEN时也会遇到同样的错误,但我无法找出问题所在。有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Hans Passant    15 年前

    是的,有两个版本的sgen.exe可用,一个用于CLR v2程序集,另一个用于CLR v4程序集。它之所以爆炸是因为您要求v2版本的sgen.exe处理v4程序集。

    检查项目如何启动sgen.exe。如果是后期生成事件,则必须调整sgen.exe的路径。我看不到一个宏或环境变量能自动正确运行,有点疏忽。

        2
  •  8
  •   sourcenouveau    15 年前

    [Microsoft (R) .NET Framework, Version 2.0.50727.3038]
    

    我发现了另一个版本的SGEN似乎在 C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\sgen.exe . 运行时输出:

    [Microsoft (R) .NET Framework, Version 4.0.30319.1]