2015-11-18 33 views
10

Tôi thiết lập một máy tính mới và cài đặt VS2015. Biên dịch dự án Tôi hiện đang làm việc trên các kết quả trong một số mã không hợp lệ (ILSpy tạo ra các nguồn không thể nén). Nó hoạt động tốt trong VS2013 bằng cách sử dụng ToolsVersion 12.Biên dịch cho ToolsVersion 12 với Visual Studio 2015

Tệp nhật ký cho tôi biết rằng thiếu công cụ 12 thiếu, vì vậy tôi đã cài đặt nó. Tuy nhiên bất cứ điều gì tôi làm hoặc thiết lập, nó luôn luôn biên dịch bằng cách sử dụng ToolsVersion 14. Tôi có thể tự gọi MSBuild.exe vận chuyển với VS2013 (sử dụng ToolsVersion 12) và mã là chính xác. Làm tương tự với MSBuild.exe được gửi cùng với kết quả VS2015 (sử dụng ToolsVersion 14) trong mã INCORRECT. Vì vậy, tất cả tôi cần là VS2015 để sử dụng công cụ 12.

MSDN nói:.

"Bắt đầu từ trong Visual Studio 2013, phiên bản MSBuild Toolset là giống như Visual Studio số phiên bản MSBuild mặc định là Toolset này bên trong Visual Studio và trên dòng lệnh, bất kể phiên bản ToolSet được chỉ định trong tệp dự án. Hành vi này có thể bị ghi đè bằng cách sử dụng cờ/ToolsVersion. Để biết thêm thông tin, hãy xem Ghi đè cài đặt công cụ nhúng. "

Đặt như vậy bằng cách sử dụng MSBuild thủ công hoạt động tốt, nhưng làm thế nào để tôi thiết lập điều này trong VS 2015 ?? Không có biến môi trường nào hoạt động, nó luôn sử dụng bộ công cụ 14!

+1

Bạn sẽ phải gỡ bỏ cài đặt .NET 4.6 để các trình biên dịch Roslyn dựa được loại bỏ. Nếu không, trình biên dịch C# có thể tiếp tục cung cấp cho bạn cùng một assembly không hợp lệ. Nhưng nói chung, ILSpy không hoạt động tốt với các assembly được biên dịch bởi Roslyn. Vì vậy, hội đồng của bạn có thể thực sự hợp lệ, chỉ ILSpy không thể hiểu chúng. Bạn có thể kiểm tra danh sách lỗi ILSpy để tìm hiểu thêm về điều đó. –

+0

Xin lỗi, đề xuất của bạn không khắc phục được sự cố! Vấn đề thực sự là VS sử dụng MSBuild 14. Như tôi đã đề cập trước đây nếu tôi chạy MSBuild từ thư mục 12 tất cả là tốt. Tôi đổi tên thư mục 14 và bây giờ VS không tải các dự án, do đó, nó tìm kiếm thư mục 14. Giải pháp đơn giản NẾU người ta biết cách thay đổi/thiết lập biến $ (MSBuildToolsVersion). Điều này rõ ràng là thiết lập đến 14 và các thuộc tính ToolsVersion không được vinh danh nữa (như Microsoft tiểu bang mà không đưa ra một giải pháp làm việc cho một sự thay thế). Tôi đổi tên thư mục 14 thành 12 và kết quả là các sự cố khác ... ARGH! – user1029883

+0

Tôi không chắc tại sao điều này lại bị giảm giá. Câu hỏi vẫn xuất hiện là "Làm thế nào để VS2015 xây dựng với một ToolsVersion trước đó?" –

Trả lời

3

Tôi để lại câu trả lời ở đây trong trường hợp giúp bất kỳ ai khác, tuy nhiên nó không giúp được áp phích gốc, như @ user1029883 nó không hoạt động khi VS2015 được cài đặt với Công cụ xây dựng 12.0 (xem @ alexandrul của bình luận dưới đây) thay vì nhiều phiên bản của Visual Studio: xin lỗi.


Thật không may, có vẻ không phải là một đơn giản cách để làm điều này. Có nghĩa là, tuy nhiên, một cách khó sử dụng:

  • Đặt biến môi trường MSBUILDLEGACYDEFAULTTOOLSVERSION
  • Đảm bảo ToolsVersion thuộc tính trong top-level yếu tố Project trong tất cả các file dự án của bạn được thiết lập để mong muốn ToolsVersion.

Xem Overriding ToolsVersion Settings page on MSDN

+0

Tôi đã thử trước đó, nó không hoạt động. Bên dưới tệp dự án và biến môi trường hàng đầu của tôi: MSBUILDLEGACYDEFAULTTOOLSVERSION 1 – user1029883

+0

Pardon sự thiếu hiểu biết của tôi: làm thế nào bạn cài đặt toolsversion 12.0 mà không cần cài đặt VS2013? –

+0

@GuyBoltonKing http://www.microsoft.com/en-us/download/details.aspx?id=40760 "Nếu bạn chưa cài đặt Visual Studio trên máy tính của mình, bạn có thể sử dụng Công cụ xây dựng 2013 để tạo ứng dụng được quản lý Các trình biên dịch Visual Basic và C# cũng được bao gồm trong bản tải xuống này (Trong các phiên bản trước, các công cụ này được bao gồm trong .NET Framework độc lập.) " – alexandrul

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