Tôi có một số dự án được tham gia vào một giải pháp. Mỗi dự án đều có cấu trúc thư mục riêng và các tệp csproj nằm ở cấp độ khác nhau của cấu trúc thư mục. Mỗi csproj đều có thuộc tính OutputPath được chỉ định. OutputPath - là một đường dẫn tương đối và nó thay đổi từ dự án đến dự án theo cách sao cho tất cả các dự án có cùng một thư mục đầu ra. Đó là công việc OK nếu tôi xây dựng một dự án riêng biệt. Nhưng mọi thứ thay đổi nếu tôi cố gắng xây dựng tệp giải pháp. Trong trường hợp này, mỗi thư mục đầu ra của dự án khác nhau (phụ thuộc vào một số '.. \' trong OutputPath của dự án).Đường dẫn tương đối với dự án MSBuild vs giải pháp
Tôi biết, trước khi một lúc nào đó tất cả đều hoạt động tốt. Không ai thay đổi build.cmd không phải bất kỳ tệp sln hoặc csproj nào. Nhưng bây giờ tôi có tình huống được mô tả ở trên.
Vì vậy, câu hỏi của tôi là - điều gì ảnh hưởng đến cách đường dẫn tương đối được đánh giá? Tôi có nghĩa là làm thế nào tôi có thể lực lượng tương đối OutputPath được đánh giá bắt đầu từ thư mục mà csproj tập tin của dự án cụ thể đó nằm. Không phải từ thư mục có tệp .sln.
Let's assume I have following directory structure:
dir1
a.sln
dir2
a.csproj
dir21
dir3
b.csproj
a.csproj có đường dẫn đầu ra thiết lập để '../../_bin' mà chỉ là trên dir1 nếu tính từ a.csproj thư mục b.csproj có đường dẫn đầu ra thiết lập để' ../. ./../_bin 'giống nhau - chỉ khoảng dir1 nếu được tính từ b.csproj
a.sln chứa cả hai - a.csproj và b.csproj.
Khi tôi chạy msbuild tôi nhận được bản dựng dự án cho dự án 'dir1 /../../_ bin' và b 'dir1 /../../../_ bin' - cả hai đường dẫn tương đối của tệp dự án được tính từ vị trí tệp giải pháp, chứ không phải tệp dự án.
+1000 Tôi đã có cùng một nguyên nhân gốc (ghi đè $ (OutputPath)) nhưng rất khác nhau vấn đề (* .designer.cs tập tin ngừng tái sinh) - chẩn đoán với MSBuild Explorer trong 5 phút. –