我有一个设计时T4模板,在VS2013和VS2015中已经使用了多年。
在VS2017中,模板无法使用MissingMethodException运行。有问题的方法存放在自定义装配中。使用绝对路径和$(SolutionDir)宏引用程序集。类似的东西:
<#@ assembly name="$(SolutionDir)path\my.dll"#>
我一直在使用Fusion Log Viewer来调试此问题。显然,&#34; my.dll&#34;无法找到。根据日志,Visual Studio并不是在寻找绝对路径。
我认为这是T4VSHost中的一个错误。无论如何要解决这个问题或解决它?
答案 0 :(得分:1)
Visual Studio,在2017年及之前,将锁定它在当前VS会话中构建的程序集。所以如果你的路径看起来像。
<#@ assembly name="$(SolutionDir)SomeProjectFolder\bin\Debug\SomeAssembly.dll" #>
然后T4引擎将抛出异常,说无法找到程序集。如果重新启动解决方案然后运行T4模板而不构建,它将正确运行。
这使得调试或以其他方式处理主要用于在T4模板中引用的程序集,这很痛苦。