2011-07-21 20 views
61

Tôi đã đọc về kỹ thuật này: http://blogs.msdn.com/b/jjameson/archive/2009/04/03/shared-assembly-info-in-visual-studio-projects.aspxShared AssemblyInfo cho versioning đồng đều giữa các giải pháp

Về cơ bản nó có nghĩa là để tạo ra một SharedAssemblyInfo.cs với versioning thông tin về lắp ráp, và thêm tập tin này như Liên kết với tất cả các dự án của giải pháp, vì vậy tệp thực sự chỉ nằm ở 1 vị trí trên đĩa.

giao dịch Câu hỏi của tôi với 2 kịch bản:

  1. giải pháp mà không sử dụng cơ chế này hiện tại: Có cách nào để dễ dàng thêm các ShareAssemblyInfo cho tất cả các dự án? (cho phép nói rằng tôi có một giải pháp với 50 dự án).

  2. Khi tạo dự án mới, theo mặc định, AssemblyInfo.cs mới được tạo. Tuy nhiên tôi muốn tự động liên kết đến SharedAssemblyInfo.

Có giải pháp nào cho vấn đề này không? thực hành phổ biến là gì?

+0

thực tế phổ biến là tạo độc đáo thông tin lắp ráp – VMAtm

Trả lời

45

Điểm đầu tiên có thể được giải quyết bằng trình soạn thảo văn bản đơn giản có thể xử lý nhiều tệp cùng một lúc và tìm/thay thế. Chỉ cần mở tất cả các csproj bạn trong đó và thay thế chuỗi <Compile Include="Properties\AssemblyInfo.cs" /> với

<Compile Include="..\SharedAssemblyInfo.cs"> 
    <Link>Properties\SharedAssemblyInfo.cs</Link> 
</Compile> 

Hoặc bạn có thể viết một tiện ích như thế:

var files = Directory.GetFiles(yourSolutionDir, "*.csproj", SearchOption.AllDirectories); 
foreach (var f in files) { 
    string contents = File.ReadAllText(f); 
    string result = contents.Replace("<Compile Include=\"Properties\\AssemblyInfo.cs\" />", putSecondStringHere_ItIsJustTooLong); // :) 
    File.WriteAllText(f, contents); 
} 

Đối với câu hỏi thứ hai ... Bạn có thể có một cái nhìn tại Visual Studio custom project templates, nhưng tôi không chắc nó xứng đáng với những nỗ lực. Bạn nên IMO viết kiểm tra mà sẽ kiểm tra này để thay thế. Nó sẽ đơn giản hơn nhiều và kết quả thực sự gần như giống nhau.

UPD: Giới thiệu về cách viết kiểm tra để kiểm tra tệp giải pháp/dự án đối với một số quy tắc tùy chỉnh. Về cơ bản, định dạng sln/csproj đủ đơn giản để có thể phân tích cú pháp mà không cần nhiều nỗ lực. Vì vậy, nếu bạn muốn có SharedAssemblyInfo.cs được liên kết vào mọi dự án - chỉ cần phân tích cú pháp của csproj và kiểm tra điều đó. Sau đó, đặt trình kiểm tra đó trong máy chủ xây dựng của bạn và chạy nó trên mỗi bản dựng. Hiện tại, chúng tôi có hệ thống như vậy đang hoạt động và tốn kém khoảng hai ngày để viết nhưng đã tiết kiệm cho chúng tôi nhiều hơn nữa (chúng tôi có các quy tắc phức tạp và dự án đa giải pháp hơn, vì vậy nó đáng giá).

Tôi sẽ không viết chi tiết về việc kiểm tra này ngay bây giờ (không phải là ngắn), nhưng tôi sẽ sớm viết bài đăng trên blog - hầu hết có thể cho đến cuối tuần này. Vì vậy, nếu bạn quan tâm - chỉ cần kiểm tra my blog sớm :)

UPD:Here.

+0

# 1 - tôi đồng ý này có thể được thực hiện với một trình soạn thảo văn bản. Tôi đã tự hỏi là VS chính nó hỗ trợ này bằng cách nào đó. (btw - là EditPad Pro tốt hơn Notepad ++ theo ý kiến ​​của bạn?) # 2 - u có nghĩa là gì bằng cách viết một bài kiểm tra mà sẽ kiểm tra này thay vào đó? –

+0

Vâng, EditPad Pro là IMO tốt hơn. Ít nhất nó chắc chắn là tốt hơn khi tôi kiểm tra N + + lần trước. Nó cũng không phải là phần mềm miễn phí, vì vậy bạn nên tự nghĩ mình có cần nó không. –

+0

Tôi đã cập nhật câu trả lời với một số chi tiết về điểm thứ hai của bạn. –

46

Có thể liên kết đến tệp thông tin lắp ráp được chia sẻ trong VS 2010. Ashish Jain có một bài đăng trên blog tốt về nó: Sharing assembly version across projects in a solution.

Sau khi tạo tập tin thông tin lắp ráp chia sẻ ở cấp giải pháp, hướng dẫn của mình để liên kết đến nó từ một dự án bao gồm:

  1. Nhấp chuột phải vào dự án, trong đó bạn muốn thêm Shared tệp lắp ráp và chọn Thêm -> Mục hiện tại ...

  2. Chọn tệp “SharedAssemblyInfo.cs” từ thư mục giải pháp.

  3. Thay vì Add, bấm vào mũi tên bên cạnh Add và bấm vào nút “Thêm vào làm Liên kết”

  4. Kéo xuống các tập tin liên kết bổ sung bên cạnh AssemblyInfo.cs trong cùng một thư mục .

  5. Lặp lại các bước 1 - 4 cho tất cả các dự án mà bạn muốn thêm tệp đính kèm .

Tôi đã thử tính năng này và hoạt động.

+3

Cảm ơn bạn đã giải thích về mũi tên nhỏ mà tôi đã bỏ qua! –

+8

Không cần lặp lại bước 1-4. Bạn chỉ có thể kéo tệp được liên kết từ dự án đầu tiên của bạn đến dự án tiếp theo. Thao tác này sẽ sao chép tệp liên kết đến dự án tiếp theo. – ristaloff

+1

Bạn cũng có thể thực hiện bằng cách thay thế văn bản trong tất cả các tệp * .csproj. Cập nhật một dự án và so sánh kết quả trong tệp csproj mới và cũ và ứng dụng trên tất cả các dự án khác trong giải pháp của bạn;) – Ludwo

0

Tôi đã tạo một ứng dụng để tự động tăng phiên bản tệp.

  1. Tải Applicaiton
  2. thêm dòng sau vào trước build dòng lệnh kiện

C: \ temp \ IncrementFileVersion.exe $ (SolutionDir) \ Thuộc tính \ AssemblyInfo.cs Xây dựng dự án Để giữ cho nó đơn giản các ứng dụng chỉ ném tin nhắn nếu có một lỗi, để xác nhận nó làm việc tốt, bạn sẽ cần phải kiểm tra phiên bản tập tin trong 'hội thông tin'

Lưu ý: Bạn sẽ phải relo quảng cáo giải pháp trong Visual studio cho nút 'Thông tin hội' để điền các trường, tuy nhiên tệp đầu ra của bạn sẽ có phiên bản cập nhật.

Đối với những gợi ý và yêu cầu xin vui lòng gửi email cho tôi tại [email protected]

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