2010-09-03 29 views
5

Chúng tôi có một ứng dụng web ASP.Net chạy trong Visual Studio 2010 đang nhắm mục tiêu .Net 3.5. Nó đang được xây dựng bởi TFS 2010. Ứng dụng web này có một vài tham chiếu web, do đó, việc xây dựng tạo ra một DLL XmlSerializers liên quan. DLL này, tuy nhiên, là một .Net 4.0 lắp ráp.TFS 2010 tạo .Net 4.0 XmlSerializers DLL cho .Net 3.5 Ứng dụng

Khi tôi chạy ứng dụng web này từ xây dựng, tôi nhận được lỗi:

Could not load file or assembly 'BLAH_BLAH_WEB_APPLICATION_NAME.XmlSerializers' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

Chúng tôi đang sử dụng một tập tin msbuild .proj đã được làm việc theo TFS 2008 (sử dụng "Nâng cấp Mẫu" trong xây dựng Định nghĩa). Tôi đã thấy this questionthis one, nhưng những đề cập đó sử dụng một bước xây dựng SGen cụ thể. Chúng tôi không. Ngoài ra, giải pháp được đề xuất liên quan đến việc mã hóa cứng đường dẫn đến 7.0A SGen, đó chỉ là ... xấu xí.

Có cách nào để buộc TFS 2010 xây dựng để biên dịch DLL XmlSerializers này thành một .Net 3.5 Assembly không?

+0

Bạn đã đặt khung đích trên dự án bộ nối tiếp thành 3.5 chưa? Kiểm tra các thuộc tính của dự án. – Robaticus

+0

Tôi không chắc chắn những gì bạn có ý nghĩa của "dự án serializer". Dự án tiêu thụ chính tham chiếu web là nhắm mục tiêu 3.5. Có một cài đặt khác cho tham chiếu web không? –

Trả lời

4

Vấn đề gốc là giá trị không hợp lệ trong sổ đăng ký. Giá trị SDK35ToolsPath dưới HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0 là:

$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\[email protected])

Tuy nhiên, máy chủ xây dựng đã có Windows SDK phiên bản 7.1. Vì vậy, tôi đã sửa giá trị thành:

$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\[email protected])

Sau đó, XmlSerializers DLL hiện đang sử dụng .Net 2.0.

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