Pertanyaan MSBuild error "CSC: error CS2001: File Sumber 'x' tidak dapat ditemukan" dengan Linked Files setelah meng-upgrade ke Visual Studio 2012


Setelah secara otomatis meningkatkan file proyek untuk aplikasi web .Net 4.0 untuk bekerja dengan Visual Studio 2012 semuanya bekerja ok pada awalnya, tetapi ketika mengkompilasi saya mendapat banyak kesalahan seperti ini:

Keterangan: File Sumber '.. \ .. \ .. \ .. \ .. \ Path File' tidak dapat ditemukan

File: CSC

Dan ketika mencoba membangun menggunakan MSBuild (hanya melewati jalur penuh proyek, tanpa parameter tambahan) di "Command Command Prompt untuk VS2012" Saya pada dasarnya memiliki kesalahan yang sama:

"CSC: error CS2001: File Sumber 'x' tidak dapat ditemukan"

Semua kesalahan mengacu pada File Tertaut (aspx, cs, dll) terletak di proyek aplikasi web lain yang terletak di kedalaman yang berbeda di Cabang kode kami (itulah sebabnya semua '.... \' di awal jalur)

Bagi saya itu tampak seperti masalah dengan Panjang file, Saya memiliki masalah yang sama beberapa waktu yang lalu ketika membangun proyek di server CI kami menggunakan MSBuild, saya dapat mengelolanya dengan memanipulasi file proyek sebelum membangunnya menggunakan skrip khusus tanpa perlu memindahkan cabang di sekitar atau mengurangi kedalaman dari proyek, saya tidak perlu memindahkan apa pun, yang penting pada saat itu adalah pengembang yang menggunakan Visual Studio 2010 dapat mengkompilasi semuanya tanpa masalah. Saya belajar dengan ini bahwa kompilasi / Bangunan dengan MSBuild berbeda dengan DevEnv / VS, dan misalnya MSBuild tidak mendukung pembangunan proyek Penataan dan DevEnv.

Karena ini terjadi sekarang dengan VS 2012 / DevEnv 2012, ditambah bahwa VS 2012 tidak mendukung proyek penyiapan lagi (seperti msbuild), ditambah VS / DevEnv memiliki masalah yang sama dengan panjang file, sepertinya VS 2012 akhirnya menggunakan msbuild di bawah tenda atau lebih terintegrasi dengan erat, namun saya tidak menemukan artikel apa pun untuk mengonfirmasi hal ini.

Mengubah struktur cabang / mengubah bagian dalam proyek bukan merupakan opsi sekarang karena beberapa alasan (basis kode besar, jumlah proyek tinggi, risiko, waktu, usaha, dll.).

Apakah seseorang memiliki solusi alternatif atau perbaikan untuk masalah ini di Visual Studio 2012?

Salam,

P.D .: BTW Saya sudah memeriksa posting ini Galat MSBuild dengan file yang ditautkan tetapi seperti yang saya katakan sebelum mengubah jalur, itu bukan pilihan sekarang.


32
2018-05-25 04:17


asal


Jawaban:


Coba dapatkan Log Build,

http://msdn.microsoft.com/en-us/library/vstudio/ms171470.aspx

nampaknya tugas csc tidak dapat menemukan file sumber. Salah satu penyebabnya Anda mengimpor file yang salah. jadi Anda harus mengedit file proyek melalui Editor Teks normal.


4
2017-11-28 16:00



Saya menemukan solusi untuk masalah ini, ketika Anda menautkan file, jalur relatif Anda dikenali oleh msbuild dan kembali dari sana, itu menjadi jalan Anda di jalan panjang namun Anda dapat mengubahnya dalam definisi proyek melakukan klik kanan / membongkar proyek / dan mengubah jalur dari ../../../ untuk $(SolutionDir)/../.. hingga menemukan file yang akan di-link, perhatikan: ini memperpanjang karakter dari 255 hingga 300 karakter.


2
2017-12-16 22:37



Saya tahu bahwa saya melakukan pertanyaan ini beberapa waktu yang lalu, tetapi untuk apa yang berharga, Pendekatan yang akhirnya kami jalani adalah:

  • Menemukan file yang dilaporkan terlalu panjang.
  • Kurangi panjang lintasan penuh dari file-file tersebut, dengan mengurangi panjang nama dan / atau panjang folder kontainer atau mengurangi folder yang bersarang tingkat. Oleh karena itu mengurangi panjang jalur penuh.
  • Perbarui tautan dari file yang diubah (re-link) pada proyek yang bergantung.

Ini memecahkan masalah dengan Visual Studio 2012 di workstation pengembang dan di server CI / Deploy kami yang menggunakan MSbuild.

Untuk skenario saya, pendekatan ini kurang berisiko, dan menyiratkan lebih sedikit upaya daripada memindahkan proyek / solusi lengkap untuk mengurangi tingkat penempatan folder atau mengurangi nama folder, dan harus memperbarui semua referensi proyek / solusi yang bergantung.


1
2017-07-31 00:28



Ok, saya memukul ini dan menyelesaikannya hari ini. Saya menemukannya dengan mengikuti tutorial MSDN (https://msdn.microsoft.com/en-us/library/ms379563%28v=vs.80%29.aspx) dan inilah perintah yang pecah untuk saya:

csc /t:library /out:MyCodeLibrary.dll simpleType.cs

Memberi saya pesan

error CS2001: Source file 't:librabry' could not be found

Yang berhasil setelah mengubah perintah asli menjadi berikut:

csc /target:library /out:MyCodeLibrary.dll simpleType.cs

Saya tidak yakin mengapa versi pendek dari bendera / target menyebabkan kesalahan ini, tetapi saya tidak menemukan tempat lain di internet yang mencatat penyebab ini secara khusus, jadi saya ingin merekamnya di sini.


1
2018-06-04 21:25



  1. Periksa apakah Anda memiliki versi terbaru dari file yang ditautkan dari proyek lain. Visual Studio TIDAK akan secara otomatis mendapatkan mereka jika mereka milik proyek lain.
  2. Periksa apakah jalur tertaut memang benar. Anda dapat memantau file apa yang VS.NET dan MSBUILD coba akses dengan bantuan alat SysInternals ProcMon (filter pada nama proses dan saring semua keberhasilan)
  3. Jika Anda menduga bahwa panjang jalur adalah masalah (ini juga akan terlihat dalam alat ProcMon), Anda dapat mencoba untuk memendekkannya dengan menghubungkan ke jalur absolut (C: \ X \ Y \ Z) daripada path relatif ( ...... \ Z). Lokasi file yang ditautkan dapat tetap tidak berubah.

0
2018-01-26 11:26



Saya 2 sen untuk masalah ini ... Dalam kasus saya, saya memiliki file yang dibuat dalam satu proyek (yaitu ConfigModel) dan saya memiliki tautan ke file ini di proyek lain tetapi ketika saya mengganti nama file ConfigModel dalam proyek pertama ke LoginModel untuk Misalnya, ia tidak mengganti nama tautan di proyek kedua yang menyebabkan kesalahan ini terjadi.


0
2018-03-29 02:27



Masalah ini muncul ketika saya kembali ke versi sebelumnya dari repositori git. Rupanya saya tidak menambahkan file proyek ke repo sehingga ketika dikembalikan tidak mengembalikan file proyek juga. Apa yang saya lakukan untuk membersihkannya adalah mengecualikan file .cs yang hilang dari proyek dengan mengklik pada file yang hilang di Explorer proyek. Itu mudah ditemukan karena ditandai dengan segitiga peringatan. Kemudian membangun kembali seluruh solusi.


0
2017-09-16 20:09