2013-02-27 25 views
5

Tôi có một tập lệnh nant rằng trong một trong các mục tiêu của nó sử dụng các thẻ msbuild để xây dựng một giải pháp Visual Studio 2010.Cách chỉ định phiên bản MSBuild trong tập lệnh nant?

Vấn đề là nó không thành công khi nó chạm điểm này, lỗi này là:

Solution file error MSB5014: File format version is not recognized. MSBuild can only read solution files between versions 7.0 and 9.0, inclusive. 

Failed to start MSBuild. 

External Program Failed: C:\Windows\Microsoft.NET\Framework\v2.0.50727\msbuild.exe (return code was 1) 

Các lỗi có ý nghĩa, nếu nó đang gọi phiên bản .NET 2.0 của MSBuild nó sẽ không biên dịch các giải pháp VS2010. Tuy nhiên, tôi không thể hiểu làm thế nào để có được nó để gọi phiên bản đúng của MSBuild.

Nếu tôi chạy 'nơi MSBuild' (từ Bộ chỉ huy VS2010 cùng Nhắc rằng xây dựng kịch bản thất bại trong), tôi nhận được:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe 

Nếu tôi chạy 'msbuild/phiên bản' (một lần nữa, cùng một cửa sổ) Tôi nhận được:

Microsoft (R) Build Engine version 4.0.30319.17929 
[Microsoft .NET Framework, version 4.0.30319.18034] 
Copyright (C) Microsoft Corporation. All rights reserved. 

4.0.30319.17929 

Vì vậy, mọi thứ có vẻ như đang sử dụng phiên bản 4.0, nhưng không phải vậy. Bất kỳ ý tưởng gì cho? Tôi biết tôi đã giải quyết vấn đề này trước đây, nhưng tôi không thể nhớ nó là gì để cứu mạng tôi.

Trả lời

4

Tôi đánh giá cao câu trả lời, và tôi biết của skolima sẽ làm việc, giải pháp kết thúc lên được đơn giản như việc bổ sung các thẻ này:

<property name="nant.settings.currentframework" value="net-3.5"/> 

Cảm ơn một lần nữa.

0

tôi đã trả lời một câu hỏi tương tự: <msbuild> task or msbuild.exe with NAnt? một khi trở lại

Về cơ bản, nếu bạn thiết lập một tài sản mà chỉ để thực thi MSBuild, bạn có thể ngăn chặn sự (dài hạn) vấn đề khi bạn nâng cấp lên phiên bản mới hơn của .NET hơn những gì mà NAnt hỗ trợ trong hộp.

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