2017-08-11 5 views
0

J'ai créé mon propre Tempalte T4 dans mon projet web qui charge les assemblys utilisés à partir de ma solution actuelle et crée des fichiers.C# T4 using assemblybinding/bindingRedirect à partir de web.config

Cela fonctionne très bien jusqu'à présent. Mais maintenant j'ai mis à jour un de mes composants NuGet vers une nouvelle version et j'ai ajouté une section assemblyBinding afin qu'une ancienne version et la nouvelle version de mon composant fonctionnent. Cela fonctionne aussi très bien pour mon site web lui-même.

Mais mon modèle T4 apporte maintenant un

The File or Assembly "\xxx...\...." or a dependency could not be found 

Il semble que mon modèle T4 ne lit pas ma section assemblyBinding dans le web.config est que possible et est-il une solution pour cette withoug mise à jour ma référence d'assemblage dans chaque DLL dépendante.

J'utilise le modèle T4 avec une DLL compilée pour l'implémentation de code et dans ma DLL je charge mes assemblées, ce qui fonctionne bien.

var assemblies = Factory.CreateAssemblyManager().LoadAssemblies(proxySettings.WebProjectName, proxySettings.FullPathToTheWebProject); 

Et puis, je suis à la recherche à l'intérieur de chaque assemblée pour mon attribut personnalisé et ici j'obtiens l'erreur ci-dessus, que le fichier ou l'assembly ne peut être chargé.

foreach (Assembly assembly in assemblies) 
    { 
     var types = assembly.GetTypes().Where(type => type.GetMethods().Any(p => p.GetCustomAttributes(typeof (CreateProxyBaseAttribute), true).Any())).ToList(); 
    } 

Erreur allemande:

{ "Die Datei oder Assembly \" Internal.Xyz.DomainModel, Version = 2.1.0.0, Culture = neutral, PublicKeyToken = d72343e09836ed19 \ » oder eine Abhängigkeit davon wurde nicht gefunden »:« Internal.Xyz.DomainModel, Version = 2.1.0.0, Culture = neutre, PublicKeyToken = d72343e09836ed19 »}

+0

Pouvez-vous montrer importante p Iece du code du modèle qui a causé une erreur de dépendance? Ce modèle T4 est-il utilisé dans le cadre de certains ORM (EF ou quelque chose)? –

Répondre

0

Le problème est que le modèle T4 n'utilise pas le modèle T4. web.config dans le projet, le template T4 fonctionne dans le contexte de Visual Studio et utilise la config de Visual Studio.

pour résoudre le problème est l'édition de la configuration du studio visuel et en ajoutant les liaisons dependentAssembly il

pour VS 2015 utiliser le chemin suivant

c:\users\[user]\AppData\Local\Microsoft\VisualStudio\14.0\devenv.exe.config 

dans VS 2017, vous devez utiliser ce chemin

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE 

vous devez redémarrer Visual studio