2010-04-30 29 views
6

Tôi vừa mới nâng cấp một dự án VS2008/.NET 3.5 SP1 lên VS2010 và .NET 4. Tôi có một sự kiện sau xây dựng gọi SGEN để tạo ra hội đồng XmlSerializers.SGEN không hoạt động sau khi nâng cấp từ VS2008 lên VS2010

Bất cứ khi nào tôi cố gắng chạy, tôi nhận được lỗi sau.

"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 /?". 

Tôi gặp lỗi tương tự khi chạy SGEN từ dòng lệnh, nhưng tôi không thể tìm ra vấn đề là gì. Bất kỳ ý tưởng?

Trả lời

2

Vâng, có hai phiên bản của sgen.exe sẵn, một cho Các hội đồng CLR v2, phần còn lại cho các hội đồng CLR v4. Nó bom vì bạn yêu cầu phiên bản v2 của sgen.exe để xử lý một phiên bản v4.

Kiểm tra xem dự án của bạn được khởi động bằng sgen.exe như thế nào. Nếu nó là một sự kiện sau xây dựng thì bạn sẽ phải tinh chỉnh đường dẫn đến sgen.exe. Tôi không nhìn thấy biến macro hoặc môi trường để biến nó thành tự động, bit giám sát.

8

Có vẻ như rằng dòng thứ hai của đầu ra từ sgen là quan trọng:

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

tôi tìm thấy một phiên bản khác của sgen mà dường như làm việc tại C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\sgen.exe. Nó ra điều này khi bạn chạy nó:

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

Tôi không chắc chắn lý do tại sao cả hai đều bao gồm trong Windows 7 SDK ...

Các vấn đề liên quan