Tôi có bốn dự án trong giải pháp Visual Studio của mình (mọi người nhắm mục tiêu .NET 3.5) - đối với vấn đề của tôi chỉ có hai dự án này là quan trọng:
- MyBaseProject <- thư viện lớp này tham chiếu tệp DLL của bên thứ ba (elmah.dll)
- MyWebProject1 <- dự án ứng dụng web này có tham chiếu đến MyBaseProject
Tôi đã thêm tham chiếu elmah.dll vào MyBaseProject trong Visual studio 2008 bằng cách nhấp vào "Thêm tham chiếu ..." → "Duyệt" tab → chọn "elmah.dll".
Các thuộc tính của tài liệu tham khảo Elmah như sau:
- Bí danh - toàn cầu
- Sao chép cục bộ - đúng
- Văn hóa -
- Mô tả - Các mô-đun và trình xử lý ghi nhật ký lỗi (ELMAH) cho ASP.NET
- Loại tệp - Hội
- Đường dẫn - D: \ webs \ otherfolder \ _myPath \ __ tools \ elmah \ Elmah.dll
- Đã giải quyết - Đúng
- Phiên bản thời gian chạy - v2.0.50727
- Phiên bản được chỉ định - sai
- Tên mạnh - sai
- Phiên bản - 1.0.11211.0
Trong MyWebProject1 tôi đã thêm tham chiếu vào Project MyBaseProject bằng cách: "Thêm tham chiếu ..." → tab "Dự án" → chọn "MyBaseProject". Các thuộc tính của tham chiếu này là giống nhau ngoại trừ các thành viên sau:
- Sự miêu tả -
- Đường dẫn - D: \ webs \ CMS \ MyBaseProject \ bin \ Debug \ MyBaseProject.dll
- Phiên bản - 1.0.0.0
Nếu tôi chạy bản dựng trong Visual Studio , tệp elmah.dll được sao chép vào thư mục bin của MyWebProject1 , cùng với MyBaseProject.dll!
Tuy nhiên, nếu tôi dọn dẹp và chạy MSBuild cho giải pháp (thông qua D: \ webs \ CMS> C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe / t: ReBuild / p: Cấu hình = Gỡ lỗi MyProject.sln ) elmah.dll bị thiếu trong thư mục bin của MyWebProject1 - mặc dù bản thân bản dựng không có cảnh báo hoặc lỗi!
Tôi đã chắc chắn rằng .csproj của MyBaseProject chứa phần tử riêng có giá trị "true" (đó phải là bí danh cho " copy local " trong Visual Studio):
<Reference Include="Elmah, Version=1.0.11211.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\mypath\__tools\elmah\Elmah.dll</HintPath>
**<Private>true</Private>**
</Reference>
(Theo mặc định, thẻ riêng không xuất hiện trong xml của .csproj, mặc dù Visual Studio đã nói "sao chép cục bộ" đúng. Tôi đã chuyển "sao chép cục bộ" thành sai - đã lưu - và đặt lại thành đúng - lưu lại!)
Có gì sai với MSBuild? Làm cách nào để có được tham chiếu (elmah.dll) được sao chép vào thùng của MyWebProject1?
Tôi KHÔNG muốn thêm một hành động sao chép postbuild vào mỗi lệnh postbuild của dự án! (Hãy tưởng tượng tôi sẽ có nhiều dự án phụ thuộc vào MyBaseProject!)