2010-01-26 7 views
1

J'ai utilisé les modèles ActiveRecord T4 de SubSonic dans quelques projets. Aujourd'hui, j'ai ajouté les mêmes modèles d'un de ces projets (sans les fichiers source .cs générés) à un nouveau projet.Pourquoi le modèle ActiveRecord T4 de SubSonic génère-t-il ActiveRecord1.cs et non ActiveRecord.cs?

Pour une raison quelconque quand je lance le générateur de code de modèle T4, au lieu de générer:

ActiveRecord.cs, Context.cs, StoredProcedures.cs et Structs.cs

le générateur de modèle crée:

ActiveRecord1.cs, Context1.cs, StoredProcedures1.cs et Structs1.cs à la place.

J'ai supprimé tous les fichiers sources .cs dans le dossier ActiveRecord et aucun autre fichier portant ces noms ne se trouve dans la solution complète.

Alors que ce n'est pas un problème, parce que les classes correctes, namespaces etc sont générés, il est ennuyeux de voir le numéro 1 ajouté à la fin des noms de fichiers. Je utilise SubSonic 3.0.0.3.

Est-ce que quelqu'un a une idée de ce qui se passe?

Répondre

4

Une solution consiste à supprimer les fichiers .cs générés et à modifier le fichier .proj manuellement. Faites un clic droit sur le projet dans VS2008 et allez décharger le projet.

Recherchez dans le fichier .proj pour ActiveRecord1.cs dans LastGenOutput et revenez à ActiveRecord.cs. répétez pour les autres fichiers. D'une manière ou d'une autre, ces noms sont incrémentés.

<None Include="T4AutoGen\ActiveRecord.tt"> 
    <Generator>TextTemplatingFileGenerator</Generator> 
    <LastGenOutput>ActiveRecord.cs</LastGenOutput> 
</None> 

Enregistrez le fichier et rechargez le projet. Vos fichiers devraient générer correctement maintenant.

Je ne suis pas sûr pourquoi cela se produit autre que de l'étrangeté avec les modèles t4. Cela devrait vous permettre de recommencer.

+0

Ah ha! .... Je m'en souviendrai pour la prochaine fois. Bien fait monsieur! – Kev

+0

Merci beaucoup pour cette information ... –