2012-05-07 15 views
5

Chúng tôi có một bổ trợ Outlook đang sử dụng triển khai ClickOnce.ClickOnce triển khai với MSBuild -> Cách chuyển số bản dựng hiện tại cho phiên bản ứng dụng/hoặc tự động phân tách

Sau khi nhà phát triển kiểm tra bản dựng, PC xếp hàng một bản dựng và ứng dụng được xuất bản lên một vị trí trên ổ đĩa được chia sẻ.

Vấn đề là bản dựng không thay đổi phiên bản xuất bản sang phiên bản lắp ráp hiện tại và do đó nó xuất bản trong thư mục của phiên bản trước đó dẫn đến trình cài đặt bị hỏng nói rằng không thể cài đặt phiên bản.

Tôi đã đọc that article. Và tôi đã thiết lập [assembly: AssemblyVersion ("1.0. *")]. Vẫn không có gì.

Tôi đã tìm ra cách khắc phục sự cố này bằng cách tăng số <ApplicationVersion></ApplicationVersion> trong tệp * .csproj. Nhưng tôi muốn nó được tự động hóa.

Cách giải quyết khác là khi thực hiện msbuild.exe:

/target:publish /property:PublishDir="\\sharedDir\\" /property:GenerateManifests=true 
/property:ApplicationVersion=1.0.0.123 

Và nó vẫn không được tự động. Tôi thực sự muốn chuyển số xây dựng hiện tại hoặc cho msbuild.exe hoặc trên mọi bản dựng thay thế giá trị trong <ApplicationVersion></ApplicationVersion> bằng số xây dựng thực tế. Hoặc là có một cách khác?

+0

Bạn đang sử dụng máy chủ xây dựng nào? Kiểm soát hành trình? Jenkins/Hudson? TFS? –

+0

Máy chủ xây dựng là TFS. –

+0

Dựa trên thử nghiệm của riêng tôi, tôi tin rằng việc tăng giá trị trong tệp * .csproj là cách chính xác và dễ dàng nhất để hoàn toàn tự động xây dựng một ứng dụng ClickOnce. Bằng cách làm như vậy các biểu hiện gió lên là chính xác. Nếu bạn chỉ cần chuyển /t:ApplicationVersion=a.b.c.d thì điều này KHÔNG đúng tạo lại tệp kê khai ứng dụng. Chỉ cần tự động tăng giá trị đó trong tệp * .csproj thông qua một chuỗi thay thế và sau đó chạy MSBuild WITHOUT giá trị/t: ApplicationVersion và mọi thứ sẽ ổn. Tôi làm điều này và cập nhật tự động hoạt động tốt. –

Trả lời

0

Tôi sử dụng Hudson làm máy chủ dựng và MSBuild để thực hiện việc xây dựng. Hudson thiết lập một biến môi trường với số xây dựng. Sau đó tôi chuyển biến môi trường đó làm đối số dòng lệnh cho một chương trình mà tôi đã viết để phân tích tệp assemlyinfo.cs và cập nhật phiên bản lắp ráp, phiên bản tệp và phiên bản thông tin lắp ráp.

Một cách tiếp cận khác là tạo một tác vụ tùy chỉnh để thực hiện việc này thay vì thực thi (thậm chí dễ dàng hơn bây giờ vì nó hỗ trợ inline tasks). Các phiên bản trước của TFS đã làm một cái gì đó tương tự mà nó thiết lập một biến enviornment, nhưng nó có thể thay đổi trong TFS 2010.

Dưới đây là nguồn tài nguyên có thể giúp bạn với điều đó:

Ngoài ra, chúng tôi đang sử dụng dòng Mage lệnh để tạo ra các ClickOnce ứng dụng và triển khai manifest. Chúng tôi gọi Mage là nhiệm vụ Exec trong dự án MSBuild.

5

Tôi đã gặp sự cố tương tự như cách tôi truy cập tại đây. Tôi đã có thể giải quyết bằng cách sử dụng mã từ câu hỏi của bạn làm cơ sở. Dưới đây là các bước để giải quyết bằng TFS.

Mở Mẫu xây dựng của bạn và mở tab Đối số ở cuối luồng công việc. Tìm MSBuildArguments và sửa đổi giá trị mặc định.Dưới đây là những gì tôi đã kết thúc với:

// Note: You can use /p for /property and /t for /target 

"/t:Publish /p:PublishDir=<PublishDirectory> /p:ApplicationVersion=" 
    + Date.Today.ToString("yyyy") + "." 
    + Date.Today.ToString("MMdd") + "." 
    + Date.Now.Hour.ToString() + "." 
    + Date.Now.Minute.ToString() 

Tất nhiên bây giờ bạn cần phải lưu và kiểm tra tệp xây dựng mới của mình. Tôi đã gặp vấn đề với việc xây dựng định nghĩa của mình để sử dụng giá trị mới, vì vậy tôi vừa tạo ra một định nghĩa xây dựng mới.

Điều đó sẽ tạo ra một thư mục Application mới như:

<ApplicationName>_2013_0315_09_55 

Tôi biết đây là một câu trả lời mới cho một bài cũ, vì vậy tôi chắc chắn rằng bạn đã tìm thấy một giải pháp khác, nhưng tôi hy vọng điều này sẽ giúp bất cứ ai người nào khác muốn sử dụng triển khai ClickOnce với TFS.