Câu trả lời được chọn cho thấy có thể sử dụng các dự án thực tế thay vì các thư mục giải pháp, nhưng không thực sự giải thích cách làm. Tôi đoán những gì tôi đang mô tả ở đây có thể là cách ít khó xử nhất để đạt được điều đó ... :-P
Vấn đề với các tệp dự án thông thường là cuối cùng chúng sẽ được biên dịch bởi MSBUILD
. Và nếu bạn muốn có một dự án chỉ chứa các tệp không thể biên dịch, đó sẽ là một vấn đề.
Nhưng một thời gian trước Visual Studio đã giới thiệu một loại dự án mới: Dự án được chia sẻ (phần mở rộng .shproj). Loại dự án này không được biên dịch theo mặc định, nhưng chỉ khi (và chỉ khi) nó được tham chiếu bởi một dự án khác.
Vì vậy, một phần của mẹo ở đây là sử dụng các dự án được chia sẻ thay vì các thư mục giải pháp . Rõ ràng là có thể thêm một dự án được chia sẻ mà không bao giờ được tham chiếu bởi bất kỳ dự án nào khác, có nghĩa là chúng ta có thể tránh được vấn đề được trình bày ở trên.
Sau đó, bằng cách sử dụng <None Include="**/*" />
mệnh đề trong tệp .shproj, chúng tôi có thể làm cho nó tự động phản ánh bất kỳ tệp và / hoặc thư mục con mới nào.
Vì vậy, về cơ bản hãy làm điều này:
- Tạo một thư mục mới trong giải pháp của bạn.
- Thêm tệp .shproj mới vào thư mục gốc của thư mục mới này.
- Tham khảo .shproj mới trong giải pháp của bạn.
Ví dụ, trong trường hợp của tôi, tôi đã tạo DockerDev.shproj, vì vậy tôi có thể nhóm một số tập lệnh liên quan đến docker mà chúng tôi chỉ chạy trong các máy phát triển của mình:
<?xml version="1.0" encoding="utf-8"?>
<!-- DockerDev/DockerDev.shproj -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="**/*" />
</ItemGroup>
</Project>
Tệp .shproj này sẽ theo dõi bất kỳ tệp nào , trong bất kỳ thư mục con nào của DockerDev
thư mục mới này trong giải pháp của tôi.
Theo những gì tôi có thể thấy, giải pháp này hoạt động khá giống những gì OP yêu cầu: nó sẽ hoạt động như một tham chiếu không thể biên dịch cho một thư mục và nó sẽ tự động phản ánh bất kỳ thay đổi nào được thực hiện đối với nó.