在Visual Studio 2017中打破了T4程序集指令

时间:2017-03-15 02:47:14

标签: t4 visual-studio-2017

我有一个设计时T4模板,在VS2013和VS2015中已经使用了多年。

在VS2017中,模板无法使用MissingMethodException运行。有问题的方法存放在自定义装配中。使用绝对路径和$(SolutionDir)宏引用程序集。类似的东西:

<#@ assembly name="$(SolutionDir)path\my.dll"#>

我一直在使用Fusion Log Viewer来调试此问题。显然,&#34; my.dll&#34;无法找到。根据日志,Visual Studio并不是在寻找绝对路径。

我认为这是T4VSHost中的一个错误。无论如何要解决这个问题或解决它?

1 个答案:

答案 0 :(得分:1)

Visual Studio,在2017年及之前,将锁定它在当前VS会话中构建的程序集。所以如果你的路径看起来像。

<#@ assembly name="$(SolutionDir)SomeProjectFolder\bin\Debug\SomeAssembly.dll" #>

然后T4引擎将抛出异常,说无法找到程序集。如果重新启动解决方案然后运行T4模板而不构建,它将正确运行。

这使得调试或以其他方式处理主要用于在T4模板中引用的程序集,这很痛苦。