Tôi có một giải pháp chứa rất nhiều dự án C#, làm thế nào tôi có thể thay đổi cấu hình của tất cả các dự án một cách nhanh chóng, như tôi muốn thay đổi thư mục đầu ra từ thùng rác sang MyBin. Tôi biết tài sản C + + có thể làm điều tương tự nhưng C# không có trang thuộc tính.Làm thế nào để cấu hình tất cả các dự án C# trong một giải pháp
Trả lời
Bạn có thể sử dụng tệp dự án 'một phần' chung để lưu trữ các nội dung phổ biến.
Di chuyển tất cả nội dung mà bạn muốn được thay đổi đồng thời thành tệp .proj độc lập, ví dụ: common.proj
:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputPath>Debug</OutputPath>
<Platform>AnyCPU</Platform>
</PropertyGroup>
</Project>
Thần sử dụng msbuild import khai để 'bao gồm' phần chung vào mỗi dự án trong giải pháp của bạn:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="common.proj" />
</Project>
MSBuild nhập khẩu làm việc nhiều hơn hoặc ít hơn trong cùng một cách thức như C++ bao gồm: trước dự án được xây dựng tất cả các chỉ thị nhập khẩu được thay thế bằng nội dung của tệp được nhập. Bây giờ bạn có thể thay đổi các thuộc tính chung của mình chỉ trong một tệp - common.proj
Có một điều quan trọng cần lưu ý: VS cache chứa tệp dự án, vì vậy bạn phải tải lại tất cả các dự án sau khi áp dụng thay đổi cho tệp common.proj
(vì vậy tôi đề xuất xây dựng từ dòng lệnh khi bạn chủ động thay đổi commom.proj
)
Chúng tôi sử dụng phương pháp này để quản lý cài đặt phân tích mã (vì chúng được cho là giống nhau trên tất cả các dự án trong giải pháp).
Cảm ơn rất nhiều vì sự giúp đỡ của bạn! –
Bạn phải xác định mới Build Configuration
, có thể được sao chép từ phát hành hoặc từ gỡ lỗi hoặc xây dựng tất cả bằng tay. Sau khi bạn có thể tùy chỉnh cho mọi dự án, tùy chọn đó là tùy chọn liên quan đến bản dựng tùy chỉnh mà bạn vừa tạo và bạn đã hoàn tất. Điều này được thực hiện, tự nhiên, chỉ một lần. Sau đó, bất cứ khi nào bạn chọn tùy chỉnh xây dựng tất cả các thuộc tính được chọn cho từng dự án trong giải pháp sẽ được thiết lập với các thuộc tính bạn muốn.
Nếu tôi đọc OP đúng, anh ta không muốn thực hiện nó trên cơ sở từng dự án , anh ấy muốn định cấu hình tất cả các dự án cùng một lúc. –
@ Moo-Juice: vâng. BUt đây là một cách để làm điều đó. Bạn * một lần * làm cho mọi dự án trong giải pháp, và sau khi mọi thứ hoạt động chỉ cần chuyển đổi giữa các tùy chọn cấu hình khác nhau. – Tigran
Tigran - vâng, đó là cách, nhưng chỉ khi bạn muốn tự giới hạn mình với VS UI. Nếu bạn không quan tâm và nếu bạn hiểu VS Projects và MSBuild có liên quan như thế nào với nhau, bạn không thực sự phải có và toàn bộ các tùy chọn mới được mở cho bạn. Giao diện người dùng VS mang lại cho bạn theo mặc định không phải lúc nào cũng tốt nhất và đôi khi phải thực hiện một số tùy chỉnh. Nó thực sự khá dễ dàng. – quetzalcoatl
- Rightclick trên TẤT CẢ các dự án trong dung dịch, one-by-one.
- Nhấp vào 'dỡ bỏ đối với từng
- sau đó nhấp vào "chỉnh sửa XXX.csproj" một lần nữa trên tất cả trong số họ
Bây giờ bạn sẽ có nhiều XMLs mở như tập tin văn bản.
Bây giờ sử dụng Tìm & Replace (control-shift-H nếu bạn sử dụng các phím tắt mặc định), và thiết lập:
- Find what:
OutputPath>bin\Debug</OutputPath
- thay bằng:
MyBin\Debug
- Look in:
All open documents
và nhấn Replace All
.
Sau đó, thực hiện tương tự với bin\Release
và MyBin\Release
.
Sau đó lưu tất cả XML, sau đó nhấp chuột phải vào mọi dự án và chọn "tải lại".
Bạn có thể làm tương tự trong bất kỳ trình soạn thảo văn bản nào hoặc bất kỳ dòng lệnh nào tìm thấy & thay thế tiện ích như sed
. Nếu bạn ave bất kỳ, sử dụng chúng để thay thế - nó sẽ giúp bạn tiết kiệm từ rightlicking/dỡ tất cả các dự án. Bạn cũng có thể khai thác thực tế là CSPROJs chỉ là các tệp MSBuild, vì vậy bạn có thể tạo một kịch bản 'cấu hình' MSBuild sẽ được bao gồm mỗi dự án C# của bạn, và sẽ xác định các biến bổ sung như 'đường dẫn đầu ra chung', v.v. Nhưng trong khi điều này chắc chắn hoạt động (tôi đã làm nó một vài lần), nó có lẽ sẽ vít lên một số PropertySheets trong giao diện người dùng VS theo cách tự nhiên nhất, ví dụ, nếu bạn sử dụng điều này để ghi đè/thiết lập OutputPaths, sau đó giao diện người dùng VS hiển thị đường dẫn đầu ra trống hoặc bị hỏng và cố gắng sử dụng giao diện người dùng VS để sửa/thay đổi chúng lần lượt sẽ ghi đè cài đặt thông minh của bạn đọc chúng từ tệp cấu hình chung. Rõ ràng, phải không.
EDIT: tại đây nó nhanh chóng được giải thích: Partial .csproj Files, tuy nhiên, vui lòng đọc nhận xét của tôi bên dưới, chỉ trong trường hợp.
Cảm ơn bạn rất nhiều vì đã trả lời. Tôi biết làm thế nào để thay đổi cấu hình bằng cách chỉnh sửa các tập tin dự án xml, và tôi cũng biết làm thế nào để thay đổi chúng trong VS GUI. Những gì tôi muốn đạt được là sửa đổi một giá trị đơn giản và sau đó tất cả các dự án sử dụng giá trị sẽ được thay đổi, ví dụ, ban đầu tôi sử dụng .NET framework 4.0 cho tất cả các dự án và bây giờ tôi muốn sử dụng 4.5 –
Cách duy nhất để làm điều đó giống như tôi đã nói - bằng cách sử dụng chỉ thị "nhập" của MSBuild trong tệp .csproj. Bạn sẽ tạo một tệp "half-project" bổ sung sẽ thiết lập một số thuộc tính phổ biến và sau đó mỗi dự án của bạn sẽ "bao gồm" tệp đặc biệt đó. Xem chủ đề này: http://stackoverflow.com/questions/157149/partial-csproj-files Quan sát và đặc biệt quan tâm đến những gì họ nói về các tệp "có nguồn gốc" nhất. Nếu projectA bao gồm projectB bao gồm projectC, và nếu projectD cũng bao gồm projectC, thì bạn nên ** chỉ ** có projectA và projectD đi kèm với Solution trong VS IDE. – quetzalcoatl
Lưu ý rằng dự án thêmB và projectC KHÔNG cần kết thúc bằng .csproj. Bạn có thể "bao gồm" bất kỳ tệp nào có định dạng XML/MSBuild chính xác. Điều này có nghĩa là bạn có thể đặt tên cho chúng một cách khác nhau và bao gồm chúng trong Giải pháp, nhưng KHÔNG phải là các dự án, mà đúng hơn là các tệp XML đơn giản. Điều này sẽ giúp chỉnh sửa chúng dễ dàng hơn một chút. Tuy nhiên, bạn vẫn phải rất cẩn thận: IDE VS thường sẽ không nhận thấy bất kỳ thay đổi nào bạn thực hiện đối với các tệp phụ đó trừ khi bạn tải lại giải pháp/projectA/projectD. Fortunatelly, nó chỉ là vấn đề IDE. Tùy chọn "Xây dựng" sẽ luôn đọc mọi thứ đúng cách. – quetzalcoatl
- 1. Làm thế nào tôi có thể làm cho tất cả các dự án trong một giải pháp sử dụng một tệp cấu hình ứng dụng duy nhất?
- 2. Làm cách nào để tìm tất cả các giá trị được mã hóa trong dự án C# (giải pháp)?
- 3. Làm thế nào để tìm tất cả các tài liệu tham khảo trong một giải pháp (do đó của tất cả các dự án)?
- 4. Làm cách nào để có danh sách tất cả cấu hình cho dự án Gradle?
- 5. Tôi có thể xây dựng nhiều cấu hình của một dự án trong một cấu hình giải pháp không?
- 6. Làm thế nào để bạn tham khảo một dự án C# từ một dự án C++/CLi trong cùng một giải pháp
- 7. tương tác giữa dự án C# và dự án C++ trong cùng một giải pháp
- 8. Làm cách nào để tìm tất cả các biến tĩnh trong dự án C# của tôi?
- 9. VS2010 Tìm tất cả các tham chiếu đến dự án trong giải pháp
- 10. Làm cách nào để liên lạc qua các dự án bên trong một giải pháp .NET?
- 11. project.json giải pháp dự án giải pháp
- 12. Làm thế nào để cấu hình slf4j + logback trong một dự án Maven đa mô-đun?
- 13. Làm thế nào để cấu trúc một dự án Haskell?
- 14. Làm thế nào để cấu hình một dự án ASP.NET MVC để làm việc với Boo
- 15. VISUAL STUDIO 2010: Làm thế nào để xuất tất cả các dự án theo một giải pháp vào cùng một thư mục
- 16. Làm thế nào để cấu hình CruiseControl.net để xây dựng các dự án đồng phụ thuộc?
- 17. Cập nhật đường dẫn tham chiếu cho tất cả các dự án trong một giải pháp cùng một lúc
- 18. TypeScript: Nhiều dự án trong giải pháp
- 19. Làm cách nào để xem các tệp Tất cả Checkout trong một dự án trong VSS?
- 20. Làm thế nào để sao chép một dự án/giải pháp trong Microsoft Visual Studio 2012?
- 21. ReSharper chạy tất cả các bài kiểm tra đơn vị trong một dự án hoặc giải pháp cùng một lúc
- 22. Tệp cấu hình nào chứa tên của tất cả các dự án trong không gian làm việc Eclipse?
- 23. Force msbuild để xây dựng một dự án mà là không được chọn trong giải pháp cấu hình
- 24. Phân nhánh các dự án cụ thể từ một giải pháp đa dự án
- 25. Làm cách nào để gỡ lỗi dự án từ một giải pháp khác trong Visual Studio?
- 26. Làm thế nào để có nhiều dự án truy cập cùng một dự án Entity Framework?
- 27. Làm thế nào để bạn cấu hình VS2008 để chỉ mở một máy chủ web trong một giải pháp với nhiều dự án?
- 28. Có các dự án riêng biệt trong một giải pháp ASP.NET MVC 5
- 29. Chuyển hướng trong nhiều dự án trong một giải pháp
- 30. Làm thế nào để một phiên bản kiểm soát cấu hình của một dự án TeamCity?
Bạn có thể tìm kiếm và thay thế thông qua tất cả các tệp csproj. – theoutlander
Đây có phải là giải pháp tiêu chuẩn cho vấn đề của tôi không? –
Có ... Bởi vì thực sự không có giao diện người dùng cho việc này. Truyền thống .NET chỉ sử dụng các thư mục 'bin' và' obj'. –