J'ai le code suivant dans une classe de testeur dans mon assembly principal, PocoGenerator
. Cet assembly est supposé utiliser un template T4 pour générer des POCO basés sur des entités L2S dans un assembly référencé (une référence de projet), DataObjects
.Impossible de référencer un assemblage dans un modèle T4
var assemblyName = "DataObjects";
var dataObjects = AppDomain.CurrentDomain.Load(new AssemblyName(assemblyName));
Essayez comme je peux, je ne peux pas obtenir T4 pour trouver l'assembly DataObjects. J'ai essayé diverses formes de assembly
directives, comme:
<#@ assembly name="DataObjects" #>
<#@ assembly name="DataObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" #>
en vain. Le code ci-dessus fonctionne dans la classe testeur, mais pas dans le modèle. Qu'est-ce que je fais mal?
AJOUTÉE: J'ai résolu ce problème en utilisant le chemin absolu à l'assemblée dans les lieux de bots je font référence, la directive ainsi que le bloc de fonctionnalité de classe, à savoir
<#@ assembly name="C:\Development\PocoGenerator\DataObjects\bin\Debug\DataObjects.dll" #>
et
var sourceAssembly = Assembly.LoadFile(@"C:\Development\PocoGenerator\DataObjects\bin\Debug\DataObjects.dll");
Mais je n'aime vraiment pas cela, car je voudrais utiliser ce modèle dans divers projets, et je déteste tout simplement la duplication, en particulier des chaînes magiques.
Votre projet de modèle devrait avoir une référence de projet au projet que vous avez une dépendance. Votre tag "assembly" ci-dessus semble correct. Et vous devriez également avoir une référence "import". Quel message d'erreur exact obtenez-vous? (et ce qui est avec les choses AppDomain? vous ne devriez pas avoir à faire quelque chose comme ça) –
Le truc AppDomain est tp permettez-moi d'itérer tous les types dans l'un des assemblys chargés dans l'AppDomain actuel. Cela n'a rien à voir avec le référencement de l'assemblage pour le modèle lui-même. – ProfK
Oui, je vois maintenant. Et quel message d'erreur exact recevez-vous? –