Saya sedang mengerjakan sebuah proyek yang mengharuskan DLL yang dihasilkan dengan membangun solusi saya untuk disalin dari folder bin ke folder lain, keduanya ada di mesin saya, di drive C saya. Saya telah menulis file batch yang menggunakan xcopy untuk menyelesaikan ini, yang dapat Anda lihat di sini:
xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.dll" "C:\inetpub\wwwroot\AppServer\bin\"
xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.pdb" "C:\inetpub\wwwroot\AppServer\bin\"
Sekarang, saya telah mencoba berbagai iterasi file ini, yang terletak di:
C:\Users\scogan\Desktop\CopyFiles.bat
sehingga baris perintah acara pasca-build saya terlihat seperti ini:
call C:\Users\scogan\Desktop\CopyFiles.bat
Saya telah menjalankan file batch ini sendiri dengan dua file teks dalam folder di desktop saya, dan berfungsi dengan baik. Saya juga menjalankannya apa adanya dengan file yang perlu saya salin sendiri, dan itu juga berfungsi dengan baik. Namun, ketika saya mencoba menjalankan ini sebagai post-build event, saya mendapatkan output ini:
1> Organizr -> C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Client\bin\Debug\Organizr.exe
1> File not found - Organizr.Services.dll
1> 0 File(s) copied
1> 0 File(s) copied
1> File not found - Organizr.Services.pdb
1>c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(4291,5): error MSB3073: The command "call C:\Users\scogan\Desktop\CopyFiles.bat" exited with code 4.
Saya telah melakukan beberapa penelitian, dan menemukan bahwa kode kesalahan 4 berarti bahwa "Terjadi kesalahan inisialisasi. Tidak ada cukup memori atau ruang disk, atau Anda memasukkan nama drive yang tidak valid atau sintaksis yang tidak valid pada baris perintah."
Saya juga telah mencari tahu apa itu MSB3073, dan belum menemukan banyak hal yang dapat membantu saya di sana. Jadi, pertanyaan saya adalah apa yang saya lakukan salah? Apakah jalur absolut mengacaukannya? Bantuan apa pun di sini sangat dihargai.
Bermain-main dengan properti proyek yang berbeda, saya menemukan bahwa urutan build proyek adalah masalahnya. Proyek yang menghasilkan file yang ingin saya salin dibuat kedua, tetapi proyek yang menjalankan file batch sebagai event pasca-build dibuat pertama, jadi saya cukup melampirkan event build ke proyek kedua sebagai gantinya, dan itu berfungsi dengan baik. Terima kasih atas bantuan Anda semua.
Lebih memilih tugas MsBuild "Copy &" dalam target AfterBuild daripada acara pasca-bangun.
Tambahkan Target ini ke dalam file proyek Anda dan hapus PostBuildEvent.
<Target Name="AfterBuild">
<Copy SourceFiles="C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.*"
DestinationFolder="C:\inetpub\wwwroot\AppServer\bin\"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
</Target>