我在我的主程序集PocoGenerator
的测试类中有以下代码。该程序集应该使用T4模板,根据引用程序集(一个项目引用)DataObjects
中的L2S实体生成POCO。
var assemblyName = "DataObjects";
var dataObjects = AppDomain.CurrentDomain.Load(new AssemblyName(assemblyName));
尽管我尝试了各种形式的assembly
指令,但我仍然无法让T4找到DataObjects程序集。
<#@ assembly name="DataObjects" #>
<#@ assembly name="DataObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" #>
我已经尽力了,但没有结果。上面的代码在测试类中有效,但在模板中无效。我做错了什么?
补充: 我通过在引用它的两个位置(指令和类特性块)中使用程序集的绝对路径来解决了这个问题。
<#@ assembly name="C:\Development\PocoGenerator\DataObjects\bin\Debug\DataObjects.dll" #>
并且var sourceAssembly = Assembly.LoadFile(@"C:\Development\PocoGenerator\DataObjects\bin\Debug\DataObjects.dll");
但是我真的不喜欢这样,因为我想在不同的项目中使用这个模板,而且我非常讨厌重复,特别是魔术字符串。