无论使用什么方法在程序集指令中指定文件,T4引擎都找不到指定的文件。
<#@ assembly name="$(SolutionDir)packages\TestPackage\lib\net45\Test.dll"#>
或<#@程序集name="C:\Test.dll"#>
或任何其他方法都会导致相同的未发现问题。模板引擎似乎能够读取文件并显示其版本信息,即使找不到它。
Errors were generated when initializing the transformation object. The transformation will not be run. The following Exception was thrown:
System.IO.FileNotFoundException: Could not load file or assembly ‘Test, Version=1.0.1.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The system cannot find the file specified.
表示缺少依赖关系。程序集没有依赖项。
为什么T4引擎找不到我的程序集?
发布于 2015-01-22 04:00:42
打包程序集时,有对EnvDTE或其他COM互操作类型的外部引用。当在EnvDTE模板中访问T4 (或其他COM)互操作时,它尝试解析EnvDTE的引用,并将解析到试图加载的程序集。这是文件找不到异常的地方,一个循环引用。它是由在程序集中嵌入互操作类型引用引起的(出于性能原因,默认情况下为on)。
更具体地说,是类型(DTE)导致Visual试图加载我的程序集。我的程序集是一个.NET 4.0程序集,默认情况下,对自动化程序集envdte的引用是在启用NoPIA功能的情况下添加的。这将导致编译器将envdte的互操作类型嵌入到我的程序集中。因此,类型( DTE )解析为程序集中的DTE类型,这导致Visual要求加载我的程序集来解析DTE类型!
为了解决这个问题,必须禁用引用的COM程序集互操作类型的嵌入。
重新生成原始程序集并尝试加载它。
https://stackoverflow.com/questions/28081086
复制相似问题