您好,我需要在我的 T4 模板文件的解决方案中添加现有项目的程序集。 问题是我的 T4 模板在一个名为 Project.WebApi 的项目中,而我在 T4 模板中需要的类在一个名为 Project.Common.WebApi 的项目中。
我试过像这样导入命名空间:
<#@ import namespace="Project.Common.WebApi.T4TemplateAttribute" #>
但是我得到这个错误:
The type or namespace name 'Project' could not be found (are you missing a using directive or an assembly reference?)
我试过像这样添加程序集:
<#@ assembly name="Project.Common.WebApi" #>
我得到了这个错误:
Compiling transformation: Metadata file 'Project.Common.WebApi' could not be found
我的包含 T4Template (Project.WebApi) 的项目有对 Project.Common.WebApi 的引用,但从我读到的 T4Template 不使用项目中的引用。
我该如何解决这个问题?
最佳答案
T4 的工作几乎完全独立于您的其余代码。虽然你在正确的轨道上,使用 assembly
指令,但你需要指定程序集的实际 DLL 的完整路径,除非程序集在 GAC 中(它可能不是)。
不过幸运的是,您可以在 T4 指令中使用 MSBuild 宏。所以,你可能会得到类似的东西
<#@ assembly name="$(SolutionDir)Project.Common.WebApi\bin\Debug\Project.Common.WebApi.dll" #>
参见 MSDN有关此语法的更多背景信息。
您还需要 import namespace
指令。
最后,注意项目构建顺序。包含您的 T4 模板的项目现在依赖于 Project.Common.WebApi,因此您需要确保首先构建 Project.Common.WebApi。否则,您的 T4 模板可能会意外链接到程序集的旧版本,从而使错误很难跟踪。
如果你已经有一个项目引用它,你就大功告成了,否则你需要正确设置依赖关系。您可以在 Visual Studio 中通过“项目依赖关系...”对话框执行此操作。右键单击该项目以找到它。
关于c# - T4 模板在解决方案中添加现有项目的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962170/