2012-04-24 27 views
5

Tôi đang sử dụng SlowCheetah để chuyển đổi tệp cấu hình XML trong dự án web Visual Studio trên máy chủ CI. Trong Visual Studio 2010, XML sẽ biến đổi tốt khi tôi xuất bản, nhưng trên máy chủ CI không có sự thay đổi nào xảy ra. Thay vào đó, tôi chỉ nhận được tệp cấu hình không được chuyển đổi ban đầu. Tôi làm theo các hướng dẫn được cung cấp bởi Sayed Ibrahim's Blog nơi ông giải thích để thêm tệp SlowCheetah dll và tệp đích trong giải pháp và trỏ tệp dự án để sử dụng các tệp đó. Tôi đã thực hiện thay đổi này và đã xuất bản trong Visual Studio chỉ để đảm bảo nó hoạt động và nó đã hoạt động. Nhưng khi tôi xây dựng dự án trên máy chủ CI tôi nhận được cùng một vấn đề tôi đã có trước đây.SlowCheetah không tạo tệp cấu hình đã chuyển đổi trên máy chủ CI

Giả định của tôi là nó có liên quan đến tập lệnh MSBuild mà tôi đang sử dụng để xây dựng dự án của mình trên máy chủ CI. Tôi có cần phải thêm một cái gì đó để nói với dự án của tôi để sử dụng SlowCheetah? xây dựng kịch bản của tôi là như sau:

<Project DefaultTargets="DoPublish" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
    <SourceFileRootFolder>$(CCNetWorkingDirectory)\Code</SourceFileRootFolder> 
    <WebFolder>DCSIWeb\DCSIWeb</WebFolder> 
    <ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder> 
</PropertyGroup> 
<PropertyGroup Condition ="$(CCNetWorkingDirectory) == ''"> 
    <SourceFileRootFolder>C:\Builds\ProjectWorkingDirectory\Code</SourceFileRootFolder> 
    <ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder> 
</PropertyGroup> 
<Target Name="CleanSource"> 
    <Message Text="Removing all source files from $(ReleaseFolder)" /> 
    <RemoveDir Directories="$(ReleaseFolder)" /> 
</Target> 
<Target Name="DoPublish"> 
    <CallTarget Targets="CleanSource"/> 
    <MSBuild Projects="$(SourceFileRootFolder)\DCSIWeb.sln" Targets="Clean;Build" /> 
    <MSBuild Projects="$(SourceFileRootFolder)\$(WebFolder)\DCSIWeb.csproj" 
     Targets="_CopyWebApplication;_BuiltWebOutputGroupOutput;TransformWebConfig" 
     Properties="OutDir=$(ReleaseFolder)\" ></MSBuild> 
</Target> 

Các kịch bản MSBuild về cơ bản xây dựng dự án và đặt dự án trong để "c: \ xây dựng \ BuildFolder". Khi tôi nhìn vào thư mục xây dựng sau khi xây dựng đã được thực hiện tôi thấy tập tin .config tôi cần nhưng không có chuyển đổi đã xảy ra với nó. Đó là cùng một tập tin trước đó.

+0

Bạn có thể gửi email cho tôi không? sayedha [at] {Microsoft} [dotcom] –

+2

Tôi đã gặp vấn đề tương tự ... từ những gì tôi đã thấy cho đến nay trình cài đặt SlowCheetah đặt mã vào vị trí người dùng specifc. Vì vậy, nếu bạn đang cài đặt SlowCheetah như chính mình và chạy CI của bạn dưới một người dùng khác thì có thể SlowCheetah không thể chạy vì nó không thể tìm thấy mã riêng của nó. Đó là những gì tôi đã phát hiện cho đến nay anyway ... vẫn chưa có nó làm việc bản thân mình hoặc chạy trong TeamCity;) –

+1

Jack, đã làm theo các hướng dẫn tại blog của tôi liên kết ở trên? –

Trả lời

0

Tôi luôn không thích loại câu trả lời đó nhưng tôi khuyên bạn nên sử dụng Config Transformation Tool. Đó là một công cụ khác để sử dụng các phép biến đổi Xdt nhưng nó đơn giản hơn nhiều so với Cheetah và một chút thông minh (các tham số hỗ trợ) sau đó là công việc MSBuild nghiêm túc. Nó có thể được lưu trữ trong giải pháp hoặc tự động phục hồi trên máy chủ CI thông qua gói NuGet. Bạn chỉ cần o gọi tiện ích với params. Tôi là một fan hâm mộ của Xdt kể từ khi được sản xuất và thấy công cụ này dễ sử dụng nhất trong các dự án của tôi.

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