SGEN не работает после обновления с VS2008 до VS2010 - PullRequest
6 голосов
/ 30 апреля 2010

Я только что обновил проект VS2008 / .NET 3.5 SP1 до VS2010 и .NET 4. У меня есть событие после сборки, которое вызывает SGEN для генерации сборки XmlSerializer.

Всякий раз, когда я пытаюсь запустить его, я получаю следующую ошибку.

"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 ]

8 голосов
/ 30 апреля 2010

Похоже, важна вторая строка вывода SGEN:

[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]

Я не уверен, почему оба они включены в Windows 7 SDK ...

2 голосов
/ 30 апреля 2010

Да, есть две версии sgen.exe, одна для сборок CLR v2, другая для сборок CLR v4. Это бомба, потому что вы просите версию sgen.exe v2 для обработки сборки v4.

Проверьте, как ваш проект запускается sgen.exe. Если это событие после сборки, вам нужно настроить путь к sgen.exe. Я не вижу макрос или переменную окружения, чтобы сделать это автоматически, немного упущения.

...