Saya memiliki empat proyek dalam solusi Visual Studio saya (semua orang yang menargetkan .NET 3.5) - untuk masalah saya hanya dua yang penting:
- MyBaseProject <- pustaka kelas ini mereferensikan file DLL pihak ketiga (elmah.dll)
- MyWebProject1 <- proyek aplikasi web ini memiliki referensi ke MyBaseProject
Saya menambahkan referensi elmah.dll ke MyBaseProject di Visual studio 2008 dengan mengklik "Tambahkan referensi ..." → "Jelajahi" tab → memilih "elmah.dll".
Sifat-sifat Referensi Elmah adalah sebagai berikut:
- Alias - global
- Salin lokal - benar
- Budaya -
- Deskripsi - Modul dan Penangan Kesalahan Kesalahan (ELMAH) untuk ASP.NET
- Jenis File - Perakitan
- Path - D: \ webs \ folder lain \ _myPath \ __ alat \ elmah \ Elmah.dll
- Terselesaikan - Benar
- Versi runtime - v2.0.50727
- Versi yang ditentukan - salah
- Nama Kuat - salah
- Versi - 1.0.11211.0
Di MyWebProject1 saya menambahkan referensi ke Project MyBaseProject oleh: "Tambahkan referensi ..." → "Projects" tab → pilih "MyBaseProject". Properti referensi ini sama kecuali anggota berikut:
- Deskripsi -
- Path - D: \ webs \ CMS \ MyBaseProject \ bin \ Debug \ MyBaseProject.dll
- Versi - 1.0.0.0
Jika saya menjalankan build di Visual Studio file elmah.dll disalin ke direktori bin MyWebProject1 saya , bersama dengan MyBaseProject.dll!
Namun jika saya membersihkan dan menjalankan MSBuild untuk solusi (via D: \ webs \ CMS> C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe / t: ReBuild / p: Konfigurasi = Debug MyProject.sln ) elmah.dll hilang dalam direktori bin MyWebProject1 - walaupun build itu sendiri tidak mengandung peringatan atau kesalahan!
Saya sudah memastikan bahwa .csproj dari MyBaseProject berisi elemen pribadi dengan nilai "true" (yang seharusnya menjadi alias untuk " copy local " di 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>
(Tag pribadi tidak muncul di xml .csproj secara default, meskipun Visual Studio mengatakan "salin lokal" benar. Saya beralih "salin lokal" ke false - save - dan atur kembali ke true lagi - save!)
Apa yang salah dengan MSBuild? Bagaimana cara mendapatkan referensi (elmah.dll) disalin ke tempat MyWebProject1?
Saya TIDAK ingin menambahkan tindakan copy postbuild ke perintah postbuild setiap proyek! (Bayangkan saya akan memiliki banyak proyek tergantung pada MyBaseProject!)