Pertanyaan Mengapa template T4 saya menambahkan nomor ke nama file?


Mengapa template T4 saya terkadang menambahkan angka ke file output dan terkadang tidak? Misalnya, dalam satu kasus saya mungkin memiliki file template yang disebut Foo.tt dan saya akan mendapatkan file output Foo.cs. Dalam kasus lain, saya akan mendapatkan file output Foo1.cs. Dalam setiap kasus, ada tidak ada yang lain  Foo.cs file yang mungkin menyebabkannya menambahkan angka. Dengan kata lain, sudah pasti bukan hasil dari konflik nama file yang jelas.

Saya adalah seorang pengembang yang sangat anal, jadi saya pasti ingin tahu bagaimana menyingkirkan akhiran angka yang tidak berguna itu.


44
2017-12-21 21:50


asal


Jawaban:


Ini terjadi ketika Visual Studio menjadi bingung dan secara singkat memutuskan bahwa itu tidak dapat menggunakan Foo.cs sebagai output untuk beberapa alasan (biasanya halusinasi), jadi ia akan menggunakan Foo1.cs sebagai gantinya, dan kemudian bersikeras mengingat pengaturan ini.

Perbaikannya adalah membuka file .csproj di editor teks dan menemukan entri Foo.tt. Ini harus memiliki sub-elemen yang disebut LastGenOutput. Ubah ini kembali ke Foo.cs, simpan file proyek, dan buka kembali di VS.

Dan kemudian - menghela napas - tunggu sampai itu terjadi lagi. Anda bisa lihat http://social.msdn.microsoft.com/Forums/en/linqtosql/thread/0c0f77a6-d712-43d2-a990-555df7960123 untuk detail lebih lanjut, meskipun sepertinya tidak ada yang bisa menjelaskan apa yang menyebabkan VS masuk ke dalam keadaan ini atau bagaimana menghentikannya melakukannya ...


71
2017-12-21 22:36



Jawaban @ itowlson benar-benar membantu saya, tetapi saya menemukan solusi yang lebih sederhana yang saya pikir akan saya bagikan.

Jika Anda memiliki:

Filename.tt
└── Filename1.cs

Cukup ganti nama Filename.tt untuk Filename2.tt:

Filename2.tt
└── Filename2.cs

Dan kembali ke Filename.tt lagi:

Filename.tt
└── Filename.cs

Voilà.


38
2018-01-10 12:08