Khi tôi xây dựng một tệp A.sln bao gồm 2 dự án B.csproj và C.csproj có tham chiếu dự án nội bộ, nó ném lỗi tham chiếu trong MSBuild. Nhưng khi tôi xây dựng B.csproj và C.csproj một cách riêng biệt trong MSBuild nó không ném lỗi. Và cũng xây dựng A.sln trong VS IDE cũng không ném lỗi. Tôi đang sử dụng .NET 2.0 framework. Hãy tìm bên dưới các kịch bản được sử dụng để xây dựng các sln và projs.MSBuild xây dựng các dự án với tham chiếu dự án một cách chính xác nhưng không phải từ giải pháp
MSBuild "<path>/A.sln" /p:Configuration=Release /p:StartupObject="" /p:WarningLevel=4 /p:Optimize=true /t:rebuild /l:Filelogger,Microsoft.Build.Engine;logfile=F:\A.sln.log /verbosity:normal
MSBuild "<path>/B.csproj" /p:Configuration=Release /p:StartupObject="" /p:WarningLevel=4 /p:Optimize=true /t:rebuild /l:Filelogger,Microsoft.Build.Engine;logfile=F:\B.csproj.log /verbosity:normal
MSBuild "<path>/C.csproj" /p:Configuration=Release /p:StartupObject="" /p:WarningLevel=4 /p:Optimize=true /t:rebuild /l:Filelogger,Microsoft.Build.Engine;logfile=F:\C.csproj.log /verbosity:normal
Edit:
Tất cả các lỗi ném là từ mã cho thiếu refernces (tất cả đều là tài liệu tham khảo dự án). Tôi chỉ nhận được ba loại lỗi như được đưa ra dưới đây.
lỗi CS0012: Loại 'X' được xác định trong một hội đồng không được tham chiếu. Bạn phải thêm tham chiếu đến assembly 'Y, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = aad4cbe5d7c27078'.
lỗi CS0234: Loại hoặc namespace tên 'X' không tồn tại trong namespace 'Y' (là bạn thiếu một tài liệu tham khảo lắp ráp?)
lỗi CS0246: Loại hoặc namespace tên ' X' không thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một lắp ráp?)
tôi xóa tất cả các file dll được xây dựng trước đó từ xây dựng đường dẫn trước khi xây dựng từ cả IDE và MSBuild. Nhưng IDE chỉ hoạt động tốt và không hiển thị một chỉ số thiếu tham chiếu trong phần "Refrences" cho dự án.
Không có đường dẫn tham chiếu nào được thêm thủ công trong IDE.
Cập nhật khác:
Tôi vừa nhận thấy rằng khi tôi mở cả hai dự án từ giải pháp, tham chiếu được trỏ chính xác trong IDE. Nhưng khi tôi mở các dự án một cách riêng biệt trong IDE, các tài liệu tham khảo bị thiếu tôi đã đề cập xảy ra trong MSBuild creep lên. Rất kinh khủng.
Vì vậy, để tóm tắt,
Buiilding .proj trong MSBuild - Tốt
Buiilding .proj trong IDE - Lỗi
Buiilding sln trong MSBuild - Lỗi
Buiilding sln trong IDE - Tốt
Trông rất kinh khủng đối với tôi. Giúp nhiều đánh giá cao.
Bất cứ khi nào bạn đặt câu hỏi và nói rằng có lỗi, nó thực sự giúp cắt và dán lỗi. Điều này xảy ra đối với trường hợp ngoại lệ, lỗi trình biên dịch, lỗi xây dựng ... –
BTW, nếu nó xây dựng hai dự án riêng lẻ mà không có vấn đề gì, thì tôi tự hỏi liệu hai dự án có cần tham chiếu dự án hay không. OTOH, điều này có thể hoạt động do tính năng gần đây cho phép MSBUILD "thông minh" về các tham khảo dự án. Vì tôi chưa bao giờ hiểu tính năng đó, tôi không thể loại trừ điều đó; nhưng tôi khuyên bạn nên xác nhận xem tất cả các tài liệu tham khảo dự án được yêu cầu, và liệu xây dựng lại B gây ra xây dựng lại C. –
@blntechie: cảm ơn cho bản cập nhật. Tôi đề nghị bạn sử dụng Solution Explorer; chọn từng tham chiếu, theo thứ tự và xem chi tiết trong cửa sổ Thuộc tính. Xem bất cứ điều gì lạ, giống như một trong obj và những người khác trong bin? Ngoài ra, nếu không có đường dẫn tham chiếu, sau đó bạn có thể không nhớ nhìn vào tệp .csproj.user của bạn để đảm bảo có thực sự là không có gì? –