2008-12-29 31 views

Trả lời

5

Tại sao bạn muốn thực hiện việc này? Nếu ứng dụng khác có thể sử dụng nó, bạn có thể muốn xem xét assembly binding redirection thay thế.

+4

Đối với việc triển khai, chúng tôi cập nhật các tập tin AssemblyInfo và làm đầy đủ xây dựng lại, nhưng đó là nhận được quá nặng, vì vậy chúng tôi đang di chuyển đến một xây dựng gia tăng. Vấn đề là xác định AssemblyInfo nào để cập nhật nên ngay bây giờ chúng tôi không cập nhật phiên bản trên số gia tăng. – Mike

+0

Vì vậy, giải pháp hiện tại có thể tôi đang xem là cập nhật phiên bản Assembly File Version để mọi người biết được bạn đang xây dựng mã nào. – Mike

+0

Bạn muốn sử dụng bản dựng gia tăng cho * triển khai *? Yikes. Bản dựng của bạn mất bao lâu và tần suất bạn triển khai? Cá nhân tôi sẽ không cảm thấy thoải mái với điều đó - tôi muốn có một bản xây dựng hoàn chỉnh và đầy đủ (chạy thử) để triển khai. Dễ dàng hơn nhiều để tái tạo theo cách đó. –

1

Có vẻ như quy trình của bạn quá nặng vì bạn phải cập nhật nhiều tệp AssemblyInfo. Bạn đã cân nhắc việc chia sẻ cùng một tệp AssemblyInfo giữa các dự án? Derik Whittaker đưa ra một ví dụ tốt về cách thực hiện việc này.

Khi bạn có một tệp, bạn có thể đi thêm khoảng cách bằng cách có quá trình xây dựng cập nhật phiên bản AssemblyInfo duy nhất của mình bằng cách sử dụng MSBuild hoặc NAnt.

35

Bạn có thể sử dụng ILMerge:

ILMerge.exe Foo.dll /ver:1.2.3.4 /out:Foo2.dll

Một lý do chính đáng để làm điều này là để tăng phiên bản lắp ráp tại một xây dựng trong bạn tìm thấy những thay đổi phá vỡ (sử dụng NDepend ví dụ). Bằng cách đó nếu không có thay đổi đột phá, phiên bản lắp ráp vẫn giữ nguyên, và bạn có thể vá bản phát hành được xây dựng dễ dàng.

Chúng tôi luôn tăng phiên bản tệp và phản ánh số bản dựng.

+1

Trừ khi lắp ráp là wpf hoặc silverlight? –

+0

Một kịch bản có thể khác mà tôi nghĩ là bạn xây dựng một phiên bản alpha và bạn muốn nâng cấp lên bản beta, phát hành ứng cử viên, và sau đó phát hành mà không cần xây dựng lại đầy đủ. Nếu việc xây dựng và thử nghiệm mất một thời gian ngắn (20 phút), điều này sẽ tiết kiệm rất nhiều thời gian nâng cao qua các giai đoạn khác nhau, và nó sẽ đảm bảo các tệp nhị phân bạn đã thử nghiệm là những tệp bạn gửi. – jpmc26

+0

Chỉ cần điều này để gỡ lỗi. Đã có một dll tài nguyên không khớp với dll tương ứng của nó. – dudeNumber4

1

Nếu bạn có kiểm tra chính thức và kiểm soát nguồn, quá trình này trở nên khá đơn giản. Nó bắt đầu với một sự hiểu biết về những người có thể thay đổi các phân đoạn số khác nhau của phiên bản và khi nào. .net assembly có 4 phân đoạn số (tức là 1.0.0.1).

Phân đoạn đầu tiên chứa số phiên bản chính. Điều này được thiết lập bởi quản lý cấp cao và cho biết một thay đổi lớn trong giao diện người dùng hoặc trong nền tảng của ứng dụng. Điều này luôn luôn phải là cùng một số giữa phiên bản lắp ráp và phiên bản tệp.

Đoạn thứ hai chứa số phiên bản nhỏ, còn được gọi là số Bản phát hành tính năng. Điều này được thiết lập bởi Quản lý dự án và cho biết rằng các tính năng mới đã được thêm vào ứng dụng. Điều này luôn luôn phải là cùng một số giữa phiên bản lắp ráp và phiên bản tệp.

Phân đoạn thứ ba chứa số Bản dựng. Điều này được thiết lập bởi nhóm thử nghiệm và cho biết rằng ứng dụng đã sẵn sàng để được triển khai. Nó được thay đổi trước khi sửa lỗi được phát hành. Khi phát hành một phiên bản mới, thử nghiệm sẽ đặt lại phân đoạn thứ tư thành 0. Đây có thể là cùng một số giữa phiên bản lắp ráp và phiên bản tệp, nhưng thường được để ở 0 cho phiên bản lắp ráp để đơn giản hóa việc triển khai bản vá hiện có.

Phân đoạn thứ tư chứa số sửa đổi. Điều này được thiết lập bởi nhóm phát triển bất cứ khi nào họ kiểm tra mã mới vào kiểm soát nguồn. Con số này sẽ được bao gồm trong phiên bản tệp của DLL đã biên dịch, nhưng không có trong phiên bản lắp ráp.

Tôi nhận thấy điều này giúp người triển khai, người kiểm tra và nhà phát triển theo dõi các phiên bản mới nhất mà không cần phải nhấn mạnh từng ngón chân khác. Unfortunatley, tôi cũng đã làm việc với các công ty đã sử dụng một hệ thống phiên bản tĩnh để không ai thực sự biết những gì mới nhất, lắp ráp tốt nhất là.

1

VerPatch, như được tham chiếu trong số answer này, rất đơn giản và hiệu quả.

+2

Nó thay đổi phiên bản win32, không phải phiên bản lắp ráp .net. – deerchao

5

Cũ chủ đề nhưng đây là 5 hào của tôi ...

  1. tháo rời

    ildasm my.exe /output:my.il /metadata

  2. Sửa my.il thay đổi thông tin phiên bản. Có rất nhiều nơi để xem xét:

    • chính: nhỏ: phiên bản: xây dựng - thường là một lần xuất hiện
    • major.minor.revision.build - một vài lần xuất hiện. Chuỗi được tìm thấy trong phần bình luận sau dòng thực tế. Phiên bản là một giá trị thập lục phân trong một mảng byte. Ví dụ:

.custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = (01 00 07 35 2E 31 2E 33 2E 30 00 00) // ...5.1.3.0..

  1. Sửa my.res thay đổi thông tin phiên bản. Nhấp đúp và chỉnh sửa với studio trực quan. Khá thẳng về phía trước thủ tục.

  2. Lắp ráp

    ilasm my.il /res:my.res

+1

Trong khi ILMerge như đã đề cập trong câu trả lời hiện tại được upvoted không làm việc cho tôi, điều này đã làm! Cảm ơn bạn! :-) – Christian

+0

Nó không hoạt động cho các tệp DLL.Lỗi tôi nhận được ở bước 4 là Tạo tệp PE Lỗi: Không có điểm nhập nào được khai báo cho tệp thực thi Không thể tạo tệp đầu ra, mã lỗi = 0x80004005 ***** FAILURE ***** –

+0

Tôi chỉ cần thêm a/dll chuyển sang bước 4. ilasm my.il /res:my.res/dll –

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