2015-07-30 17 views
16

Tôi đã cập nhật lên Visual Studio 2015 khi nó được phát hành tuần trước. Resharper gợi ý rằng tôi có thể muốn cập nhật chuỗi sau đây sử dụng string.Format:TFS sẽ không biên dịch cú pháp nội suy chuỗi

string filePath = HttpContext.Server.MapPath(string.Format("~/App_Data/{0}.xlsx", Guid.NewGuid())); 

Để sử dụng chuỗi suy:

string filePath = HttpContext.Server.MapPath($"~/App_Data/{Guid.NewGuid()}.xlsx"); 

Tôi đã làm điều này, và tất cả là tốt.

Tuy nhiên tôi đã phá vỡ xây dựng trên TFS:

Controller \ MyController.cs (224): nhân vật bất ngờ '$'

Vì vậy, nó có vẻ như các tính năng mới trong C# 6 không thể được biên soạn bởi phiên bản TFS cũ, không cập nhật của chúng tôi.

Dự án vẫn được nhắm mục tiêu sử dụng Framework 4.5 tuy nhiên, tôi chưa nhắm mục tiêu 4.6. Tôi (sai) giả định rằng vẫn nhắm mục tiêu khung cũ sẽ có nghĩa là nó có thể được xây dựng bởi các thành viên khác trong nhóm vẫn sử dụng VS2013 cùng với máy chủ xây dựng TFS của chúng tôi.

Vì vậy, có vẻ như TFS của chúng tôi cần cập nhật ... một cái gì đó.

Tôi cần cài đặt gì trên máy chủ TFS để biên dịch cú pháp mới này? Phiên bản mới nhất của Khuôn khổ .NET hoặc cái gì khác?

Trả lời

15

Cài đặt .NET Framework 4.6Build Tools 2015 trên máy chủ xây dựng của bạn. Sau đó override the ToolsVersion (/tv:14.0) trong đối số MSBuild.

+0

Theo tài liệu, .NET 4.6 là không cần thiết, 4.5 phải đủ tốt. Tôi đã không thử nó, mặc dù. – Xenan

+0

Có thể bạn chỉ đơn giản là sử dụng phiên bản sai của MSBuild. bộ điều khiển xây dựng TFS 2013 sẽ không tìm thấy MSBuild 15.0 trên hộp, để sử dụng MSBuild 15.0, bạn sẽ cần phải nâng cấp máy chủ TFS. –

+0

Tôi đã cài đặt ở trên trên máy chủ xây dựng của chúng tôi (2013) nhưng bản dựng của tôi vẫn không thành công. Bạn đã nâng cấp TFS @ bgs264 chưa? – Zenuka

6

Thật không may, dường như không có cách nào dễ dàng để có được các phiên bản TFS cũ hơn hoạt động với C# 6.0 mà không cài đặt VS2015 trên máy chủ xây dựng TFS. Nếu bạn có thể làm điều đó, tôi sẽ đề nghị điều đó. Nếu, vì lý do gì đó, bạn không thể, sau đó những điều sau đây làm việc cho tôi:

Tôi làm theo hướng dẫn của câu trả lời khác, nhưng điều đó không làm việc. Tôi cũng phải chỉnh sửa mẫu quy trình xây dựng TFS mặc định (trong trường hợp của tôi được tìm thấy trong $ // BuildProcessTemplates) và thay đổi các thuộc tính ToolPath của các nút "Chạy MSBuild cho Project" thành vị trí của MSBuild 14.0 (thường là C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin).

Sau đó, bạn sẽ cần cập nhật các định nghĩa xây dựng của mình để sử dụng mẫu xây dựng mới (nếu bạn đã sao chép/chỉnh sửa mẫu mới và chỉnh sửa mẫu gốc).

Tại thời điểm này, bạn sẽ có thể xây dựng các dự án C# 6 với TFS, nhưng nếu bạn đang cố gắng triển khai/đóng gói web, thì vẫn còn một vài bước nữa.

Trên máy chủ xây dựng, tại C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0, cần có thư mục Typescript và không có gì khác. Trên máy địa phương của bạn với VS2015, đi đến cùng một con đường. Nên có một thư mục Web và WebApplications. Sao chép chúng vào thư mục của máy chủ. Bây giờ bạn có thể đóng gói/triển khai các dự án web.

0

Vui lòng kiểm tra xem "Chạy MSBuild cho dự án" có tồn tại nhiều lần trong khuôn mẫu quy trình xây dựng TFS của bạn không. Trong trường hợp của tôi nó đã tồn tại hai lần và đã cho tôi một lúc để tìm ra lý do tại sao thay đổi cho ToolPath đã không dùng hiệu quả mong muốn.

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