9

Tôi không muốn cài đặt Cheetah chậm trên tất cả các máy chủ xây dựng.Phương pháp xây dựng Cheetah chậm chạp tự động

Chúng tôi đang sử dụng Cheetah chậm để chuyển đổi cấu hình và hoạt động hoàn toàn ổn. Nó tạo ra nhiều tập tin app.config và chúng tôi thực hiện thay đổi cho chúng như mong muốn.

Chúng tôi đã thiết lập một số máy chủ. Tất cả đều có kho mã của họ, họ kéo mã từ dòng lệnh và xây dựng các gói phù hợp. Những mã này có các tệp cấu hình trong đó. Nhưng khi chúng ta biên dịch ứng dụng từ dòng lệnh, các gói không được tạo ra với phép biến đổi nếu cheetah chậm không được cài đặt trên chúng. Nếu không nó hoạt động tốt.

Chúng tôi không bao giờ biết khi nào chúng ta thiết lập một máy chủ mới và người dùng mới, vì vậy nó không phải là có thể cài đặt chậm cheetah trên mỗi một trong số họ

Có thể bằng cách nào đó để sử dụng cheetah dll chậm trong việc áp dụng và gọi phương pháp chuyển đổi bằng tay từ nó?

Cảm ơn

+0

Bạn đề cập đến việc xây dựng một số tệp app.config - có thể đó là những gì tôi đang tìm kiếm tại http://stackoverflow.com/questions/12670498/slowcheetah-can-multiple-build-configs-share-one- config-transformation? :-) –

Trả lời

4

tôi bao gồm SlowCheetah trong việc áp dụng như sau, để tránh việc nó được cài đặt trên các máy chủ đó xây dựng các giải pháp:

  1. Trong rễ giải pháp của tôi, tôi có một cụ thư mục có chứa (trong số những thứ khác) SlowCheetah
    1. myproject/Công cụ/SlowCheetah/SlowCheetah.Tasks.dll
    2. myproject/Công cụ/SlowCheetah/SlowCheetah.Transforms.targets
    3. 0.123.
  2. Trong csproj-file (web-) ứng dụng dự án, tôi có điều này:

    <PropertyGroup> 
      <SlowCheetahTargets Condition=" '$(SlowCheetahTargets)'=='' ">$(MSBuildProjectDirectory)\..\Tools\SlowCheetah\SlowCheetah.Transforms.targets </SlowCheetahTargets> 
    </PropertyGroup> 

và điều này:

<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" /> 

..và nó dường như xử lý công việc rất tốt, ngay cả khi xây dựng/xuất bản từ TeamCity.

Edit:

Bạn sẽ tìm thấy hai tập tin đề cập trong %localappdata%\Microsoft\MSBuild\SlowCheetah\v1 (drive:\Users\yourusername\AppData\Local\Microsoft\MSBuild\SlowCheetah\v1) khi bạn đã cài đặt SlowCheetah vào Visual Studio.

+0

Điều gì sẽ là SlowCheetah.Transforms.Targets, vui lòng hướng dẫn tôi. Cảm ơn – MegaMind

+0

Xem bản chỉnh sửa của tôi ngay bây giờ –

10

Để thay thế cho SlowCheetah, bạn có thể xử lý chức năng này bằng cách chỉnh sửa tệp dự án theo cách thủ công. Đó là một chút cồng kềnh hơn để thiết lập, nhưng nó có nghĩa là bạn không có thêm DLL cần thiết.

Mở tệp dự án của bạn trong trình chỉnh sửa văn bản. Ở dưới cùng của hồ sơ dự án, ngay trước thẻ đóng, bao gồm:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" /> 
<Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')"> 
    <!-- Generate transformed app config in the intermediate directory --> 
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" /> 
    <!-- Force build process to use the transformed configuration file from now on. --> 
    <ItemGroup> 
     <AppConfigWithTargetPath Remove="app.config" /> 
     <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config"> 
      <TargetPath>$(TargetFileName).config</TargetPath> 
     </AppConfigWithTargetPath> 
    </ItemGroup> 
</Target> 

Sau đó, tìm trong dự án của bạn nộp dòng và thay thế bằng những điều sau đây:

<ItemGroup> 
    <Content Include="App.config" /> 
    <Content Include="App.Debug.config"> 
     <DependentUpon>App.config</DependentUpon> 
    </Content> 
    <Content Include="App.Release.config"> 
     <DependentUpon>App.config</DependentUpon> 
    </Content> 
</ItemGroup> 

Bạn' sẽ cần thêm một Bao gồm nội dung bổ sung cho mỗi cấu hình bạn thêm - không may với phương pháp này bạn không nhận được menu ngữ cảnh “thêm biến đổi” đơn giản.

Sau đó là trường hợp tạo tệp trong thư mục dự án của bạn và sau đó bạn đã sẵn sàng. Nó không phải là slick như SlowCheetah, nhưng nó giữ mã của bạn di động.

+6

Thực tế việc cắm Microsoft.Web.Publishing.Tasks.dll là tác vụ có nghĩa là bạn phải cài đặt studio hình ảnh trên máy chủ dựng. Dll này chỉ được vận chuyển với studio trực quan, không phải với .NET framework. Vì vậy, tuyên bố của bạn về "không yêu cầu thêm DLL" là không chính xác. NB: Theo như tôi hiểu - slowcheetah được tạo ra chính xác để giải quyết hạn chế này - có một nhiệm vụ cụ thể để chuyển đổi configs \ XML, nhưng các dev không được phép sử dụng nó ngoại trừ với Visual Studio. Tôi nghi ngờ Sayed Ibrahim Hashimi bắt đầu chậm chạp vì anh ta không biết về nhiệm vụ TransformXml. –

+0

Làm thế nào để các dự án web thông thường biên dịch với các biến đổi cấu hình trên một máy xây dựng nếu dll đó không có mặt? Tôi thừa nhận rằng SlowCheetah đã được bắt đầu để đơn giản hóa quá trình - chắc chắn quá trình tôi mô tả ở trên là cồng kềnh hơn. –

+1

có phải không? AFAIK - biên dịch dự án nhưng không áp dụng chuyển đổi. Và có, đây là lý do tại sao tất cả các đại lý xây dựng của chúng tôi đã cài đặt VS. Trên thực tế không có sự khác biệt giữa những gì VS làm với biến đổi web.config và những gì SlowCheetah. Sửa tôi nếu tôi sai, nhưng VS vừa khóa tính năng này cho web.configs, và nó thực sự áp dụng cho bất kỳ loại tệp xml nào. Tôi đã sử dụng nhiệm vụ này để chuyển đổi không chỉ ServiceDefinition và ServiceConfiguration, mà còn tạo ra phép biến đổi thời gian chạy để chạy thể hiện giả lập azure trên máy chủ thử nghiệm chia sẻ - nhiệm vụ khó khăn nhưng có thể đạt được –

4

Phiên bản mới nhất của SlowCheetah (2.5.14) có sẵn trên Nuget. Khi thêm thông qua nuget nó được lưu trữ trong thư mục packages trong thư mục giải pháp cục bộ (giống như tất cả các gói nuget) có nghĩa là nó sẽ hoạt động trên bất kỳ máy chủ xây dựng nào ra khỏi hộp bây giờ.

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