Tengo el siguiente código en una clase de prueba en mi ensamblaje principal, PocoGenerator
. Se supone que este ensamblaje utiliza una plantilla T4 para generar POCO basado en entidades L2S en un conjunto referenciado (una referencia de proyecto), DataObjects
.No se puede hacer referencia a un conjunto en una plantilla T4
var assemblyName = "DataObjects";
var dataObjects = AppDomain.CurrentDomain.Load(new AssemblyName(assemblyName));
Probar como puedo, no puedo obtener T4 para encontrar el ensamblado DataObjects. He intentado varias formas de assembly
directivas, como:
<#@ assembly name="DataObjects" #>
<#@ assembly name="DataObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" #>
en vano. El código anterior funciona en la clase de prueba, pero no en la plantilla. ¿Qué estoy haciendo mal?
Añadido: I han resuelto este problema mediante el uso de la ruta absoluta al conjunto en lugares bot I referencia a ella, la Directiva, así como el bloque de función de clase, es decir,
<#@ assembly name="C:\Development\PocoGenerator\DataObjects\bin\Debug\DataObjects.dll" #>
y
var sourceAssembly = Assembly.LoadFile(@"C:\Development\PocoGenerator\DataObjects\bin\Debug\DataObjects.dll");
Pero realmente no me gusta esto, ya que me gustaría utilizar esta plantilla en varios proyectos, y simplemente odio la duplicación, especialmente de cadenas mágicas.
Su proyecto de plantilla debe tener una referencia de proyecto al proyecto que tiene una dependencia. Su etiqueta de "ensamblado" de arriba se ve bien. Y también debería tener una referencia de "importación" también. ¿Qué mensaje de error exacto está recibiendo? (y ¿qué pasa con el elemento AppDomain? no debería tener que hacer algo como eso) –
El elemento de AppDomain es tp, permítame iterar todos los tipos en uno de los ensamblajes cargados en el AppDomain actual. No tiene nada que ver con hacer referencia al ensamblaje de la plantilla en sí. – ProfK
Sí, ahora veo. ¿Y qué mensaje de error exacto estás recibiendo? –