Xây dựng ASP.NET 4.5 mà không cần Visual Studio trên Build Server


81

Đã lâu kể từ khi tôi thiết lập Máy chủ xây dựng nên có thể tôi đã quên điều gì đó hoặc có thể .NET 4.5 khác với bất kỳ phiên bản nào tôi đã làm với lần trước, nhưng đây là vấn đề của tôi.

Tôi đang cố gắng thiết lập một máy chủ xây dựng để giám sát kho lưu trữ kiểm soát nguồn. Bất cứ khi nào có điều gì đó thay đổi, tôi muốn máy chủ kéo các thay đổi và xây dựng dự án. Nếu không có lỗi, tôi muốn triển khai trang web đến một trang web đang chạy trên máy chủ xây dựng.

Trước đây khi tôi làm điều này, tôi nghĩ rằng tôi có thể làm điều này chỉ khi cài đặt .NET, nhưng khi tôi cố gắng xây dựng dự án này, tôi gặp lỗi "C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v11 .0 \ WebApplication \ Microsoft.WebApplication.targets "bị thiếu và nếu tôi đi xem lại, tôi có thể thấy nó bị thiếu. Trên thực tế, không có tệp mục tiêu Visual Studio 11 nào.

Sau rất nhiều suy nghĩ và vò đầu bứt tai, tôi đã đi ra ngoài và nhận được "Windows 8 / .NET 4.5 SDK" và nghĩ rằng .NET 4.5 SDK có thể cài đặt các tệp mục tiêu mà tôi cần, nhưng điều đó đã không xảy ra trừ khi tôi cài đặt sai bằng cách nào đó. .

Vì vậy, tôi cần đặt những gì trên Máy chủ xây dựng để có được dự án để xây dựng. Tôi không muốn phải cài đặt Visual Studio 2012 đầy đủ.


Tôi đã thực hiện một số nghiên cứu kể từ khi tôi đăng bài này. Hãy cho tôi biết nếu tôi đang đi sai hướng. Có vẻ như đây cũng là một vấn đề với Visual Studio 2010 và có vẻ như mọi người đã giải quyết vấn đề này theo một vài cách. Một là cài đặt Visual Studio Team Explorer. Tôi đã thử điều đó nhưng máy chủ của tôi là Win 2008 r1 và VSTE2012 không tương thích. Giải pháp khác hơi đáng sợ là sao chép các tệp mục tiêu từ một máy khác. điều đó đã giúp tôi hiểu thêm, nhưng bây giờ tôi nhận được lỗi rằng các cụm tham chiếu của tôi bị thiếu mà tôi đoán có liên quan đến sự cố ban đầu. Có cách nào khác không?
Zack

3
Bạn đang đi đúng hướng, cách dễ dàng để giải quyết vấn đề là cài đặt VS 2010 trên máy chủ xây dựng của bạn. Đó là một công cụ hơi cùn mặc dù vậy. Cách thứ hai sẽ là thực hiện những gì bạn đang làm và lấy các mục tiêu và các yếu tố phụ thuộc liên quan từ một máy khác và chỉ triển khai các tệp đó đến máy chủ. Điều nguy hiểm với phương pháp này là gói dịch vụ VS có thể thay đổi các tệp bạn đã sao chép và máy chủ xây dựng của bạn sẽ sử dụng phiên bản cũ của các mục tiêu đó trong khi các nhà phát triển của bạn đang sử dụng các phiên bản cập nhật.
James Reed

Ý bạn là VS2012? Vâng. Tôi sẽ kiểm tra, nhưng tôi cho rằng nó không thể so sánh được với win server 2008 r1 vì team explorer 2012 thì không, nhưng tôi không kiểm tra kỹ.
Zack

1
Xin lỗi, tôi đã bỏ lỡ bit 2012, tôi đoán nó sẽ chỉ cài đặt trên server 2008 r2 vì nó chỉ hoạt động với win 7 ở phía máy khách. Tôi giả định rằng việc cập nhật hệ điều hành trên máy chủ xây dựng là không có câu hỏi?
James Reed

vâng, tôi đã suy nghĩ về việc cập nhật hệ điều hành máy chủ. Tôi sẽ xem xét nó, nhưng tôi không chắc mình có được phép không.
Zack

Câu trả lời:


35

Sự cố của tôi liên quan đến việc cài đặt Bộ phát triển phần mềm Windows (SDK) cho Windows 8 trên Windows 2008 Box. Nếu bạn đọc thêm trên trang, bạn sẽ đến tiêu đề có nhãn "Công cụ SDK .NET Framework 4.5 trên Windows Vista và Windows Server 2008." Điều này cho bạn biết:

  1. Chạy trình cài đặt Windows SDK cho Windows 8 trên hệ điều hành được hỗ trợ (ví dụ: Windows 7 hoặc Windows 8).
  2. Chọn tùy chọn sau trên màn hình Chỉ định vị trí: Tải xuống Windows SDK để cài đặt trên một máy tính riêng biệt.
  3. Nhấn nút Tiếp theo.
  4. Trả lời các câu hỏi trên màn hình Tham gia Chương trình Cải thiện Trải nghiệm Khách hàng (CEIP).
  5. Trên màn hình tiếp theo, chọn tính năng Bộ phát triển phần mềm .NET Framework 4.5. Bỏ chọn tất cả các tính năng khác có thể được bỏ chọn.
  6. Chọn nút Tải xuống.
  7. Đi tới vị trí tải xuống (được chỉ định trong bước 2) và tìm tệp trình cài đặt công cụ SDK .NET Framework 4.5 sau: sdk_tools4.msi, sdk_tools4.cab
  8. Bạn có thể sao chép các tệp này vào máy tính Windows Vista hoặc Windows 2008 Server trong tổ chức của mình. Các tệp này cần được sao chép vào cùng một thư mục trên máy tính Windows Vista hoặc Windows 2008 Server. Lưu ý: Không phân phối lại các tệp này bên ngoài tổ chức của bạn hoặc như một phần của bất kỳ trình cài đặt nào khác.
  9. Trên máy tính Windows Vista hoặc Windows 2008 Server, hãy xem lại điều khoản cấp phép tại đây.
  10. Kiểm tra xem .NET Framework 4.5 đã được cài đặt trên máy tính chưa. Nếu không, hãy tải xuống và cài đặt .NET Framework 4.5 từ www.microsoft.com.
  11. Mở dấu nhắc lệnh với đặc quyền của quản trị viên.
  12. Đi tới thư mục nơi các tệp trình cài đặt Công cụ SDK .NET Framework 4.5 đã được sao chép.
  13. Cài đặt công cụ SDK .NET Framework 4.5 bằng cách sử dụng dòng lệnh: Msiexec / i sdk_tools4.msi VSEXTUI = 1

Cảm ơn Swampy. Tôi sẽ đánh dấu câu trả lời này là đúng, nhưng tôi chỉ muốn đề cập đến một vài điều. Tôi sẽ không kiểm tra điều này, nhưng câu trả lời của bạn có vẻ như nó có thể hoạt động. Thay vào đó, chúng tôi chỉ nâng cấp máy chủ. Thứ hai, bạn có biết nếu làm theo cách này sẽ cho phép các thành phần được cập nhật khi các bản vá và gói dịch vụ được phát hành?
Zack

Tôi đã theo các hướng dẫn với Server 2008 nhưng tiếc là tôi vẫn thấy file .nlp và mscorlib đã được bao gồm trong việc triển khai sử dụng triển khai web
Nathan

1
Cảm ơn rât nhiều. Tôi đang sử dụng Jenkins và tôi vừa cập nhật dự án của mình để sử dụng .NET 4.5. Khi tôi đẩy công việc của mình cho Jenkins, nó không phàn nàn về phiên bản sai, nó phàn nàn về việc thiếu lắp ráp System.Runtime. Tôi thích giải pháp này hơn là sao chép thủ công các tệp vì giải pháp này dễ tự động hóa hơn.
Ido Ran,

Tôi sử dụng Windows Server 2012 và tôi có VS2012 trong Windows 8 (Máy phát triển). Chỉ có tôi yêu cầu chỉ tiêu cho MSBuild "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ SDK bao gồm nhiều hơn nữa, không phải là.?
Kiquenet

84

Để chạy trên máy chủ CI của bạn mà không cần Visual Studio, bạn chỉ cần sao chép một vài thư mục từ máy phát triển vào cùng một vị trí trên máy chủ CI. Không cần cài đặt SDK.

VS 2015:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplication

VS 2013:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplication

VS 2012:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplication

VS 2010:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplication

.NET 4.6:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.2

.NET 4.5.1:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5

.NET 4.0.1:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0.1

.NET 4.0:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0

Hoặc, như Matt đã đề xuất , bạn có thể sao chép chúng vào một thư mục con của dự án và thay đổi <MSBuildExtensionsPath32>vị trí trong tệp MSBuild (thường là .csprojhoặc .vbproj) của bạn.

Khi bạn đã hoàn thành việc này, dự án của bạn sẽ được biên dịch.

Bạn cũng nên đặt biến môi trường VisualStudioVersion rõ ràng thành phiên bản Visual Studio (10.0 cho VS2010, 11.0 cho VS2012, 12.0 cho VS2013, 14.0 cho VS2015) mà bạn đang sử dụng chỉ để đảm bảo rằng nó được đặt ngay trong cấu hình của bạn.


6
điều này đã giải quyết vấn đề cho chúng tôi +1. Đến từ maven / java, đây là loại hạt.
NimChimpsky

Tham chiếu Assemblies không được cài đặt với .NET Framework? MSBuild không nhắm mục tiêu. Tôi không chắc chắn về các Hội đồng tham khảo, tôi nghĩ rằng có.
Kiquenet

Sao chép C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 từ máy của nhà phát triển vào cùng một thư mục trên máy xây dựng đã thực hiện một mẹo nhỏ đối với tôi sau khi Team City không thể biên dịch giải pháp .NET 4.5, tuy nhiên là .NET 4.0 giải pháp trước đó đã biên dịch.
Tore Aurstad

+1 cho các hội đồng tham khảo. Tôi đang xây dựng một dự án 4.5.1 bằng Teamcity và MSBuild14 và đó là liên kết bị thiếu trên máy xây dựng đại lý của tôi.
N. Warfield

đây là một vấn đề ngu ngốc phải có, nhưng một giải pháp đơn giản cho nó.
cori

25

Từ msdn :

Windows SDK không còn đi kèm với môi trường xây dựng dòng lệnh hoàn chỉnh. Bạn phải cài đặt riêng một trình biên dịch và xây dựng môi trường. Nếu bạn yêu cầu một môi trường phát triển hoàn chỉnh bao gồm trình biên dịch và môi trường xây dựng, bạn có thể tải xuống Visual Studio 2012 Express, bao gồm các thành phần thích hợp của Windows SDK.

Để khắc phục điều này, tôi phải sao chép thư mục C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5từ máy phát triển của mình (nhân tiện có Visual Studio 2012) vào các tác nhân xây dựng. Sau thao tác này, Team City không báo lỗi nữa và mscorlib.dll không được xuất vào thư mục bin.


cảm ơn, điều này đã sửa nó cho tôi, mà không cần phải tải xuống sdk. (hoặc bất kỳ bước nào trong câu trả lời được chấp nhận)
Cohen

Tuyệt vời, đã cứu một ngày của tôi!
Magnus

1
Đây chắc chắn phải là câu trả lời được chấp nhận. Dễ dàng hơn nhiều vì bạn chắc chắn đã có một chiếc máy với các cụm ref.
Josh Kodroff

1
@artfulhacker VS 2012 và Win 8 SDK đều không cài đặt được trên Win2k8 R1. Nếu bạn đang sử dụng R1 như tôi, bạn phải sao chép các cụm ref.
Josh Kodroff

1
Nhưng không có bản sao của msbuild.exe trong thư mục này. Tôi đã cài đặt VS2012 trên PC dành cho nhà phát triển của mình (không phải máy xây dựng) và tôi vẫn không thấy phiên bản 4.5.
ashes999

12

Microsoft Build Tools 2013 sẽ giúp trong trường hợp này, như trang tải xuống của nó mô tả:

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 Build Tools 2013 để tạo các ứng dụng được quản lý. 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, những công cụ này đã được bao gồm trong .NET Framework độc lập.)


1
Giải thích thêm một chút có thể giúp các lập trình viên hiểu được cách thức hoạt động của liên kết tham chiếu. Vì trong tương lai, liên kết tham chiếu có thể không tồn tại nữa.
NJInamdar

Microsoft Build Tools 2013 cho VS 2013 và cả VS 2012 ? Dù sao, tốt hơn hãy cài đặt Microsoft Build Tools hoặc Visual Studio Agents 2012 stackoverflow.com/a/20373256/206730 ?
Kiquenet

8

Nợ của tôi. thích cách tiếp cận tối giản đối với những gì được cài đặt trên các máy xây dựng Win 7 của chúng tôi. Tuy nhiên, chúng tôi không thích chỉ sao chép và dán các tệp / thư mục vì các vấn đề về khóa đăng ký tiềm ẩn. Thay vì cài đặt VS 2013, tôi đã cài đặt các thành phần nhỏ hơn và miễn phí sau đây. Giờ đây, nhóm phát triển có thể xây dựng thành công các ứng dụng web VS 2013.


Cảm ơn bạn rất nhiều. Tôi luôn tự hỏi làm thế nào để có được Microsoft.WebApplication.targetsvà tôi chưa bao giờ biết về cái Vỏ bị Cô lập đó!
William Gross

6

Tôi giải quyết vấn đề này với Đại lý Visual Studio.

Bạn có thể thử cài đặt Visual Studio Agents 2012.

http://www.microsoft.com/en-us/download/details.aspx?id=38186


Không hoạt động cho VS2013. Tôi đã cài đặt Tác nhân và Bộ điều khiển nhưng C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 chưa được tạo
Guillaume

1
Tất nhiên, các tác nhân cho Visual Studio 2013 cũng có sẵn - đối với những người đọc câu trả lời này với VS 2013 hơn là VS 2012.
J0e3gan

2
Nó thực sự hoạt động! Bạn chỉ cần cài đặt Visual Studio 2013 Shell (Isolated) (x86) Và hơn Visual Studio 2013 Shell (tích hợp) (x86)
Andrii

@Andrii Visual Studio Agents 2012 yêu cầu cài đặt? hoặc chỉ Visual Studio 2012 & 2013 Shell (Isolated) (x86) và Visual Studio 2012 & 2013 Shell (Integrated) (x86) mà không cài đặt VS Agents ?
Kiquenet

Chỉ có vỏ. Tôi chỉ cài đặt năm 2013
Andrii
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.