T4模板汇编指令

TDa*_*ver 10 .net c# t4 visual-studio-2010

我有一个自定义的dll,里面有一个类,并且(为了简单起见),它上面有一个返回字符串的方法.

我有一个引用所述dll的项目,我想在该项目中使用一个(未预处理的)T4模板,该模板调用所述方法.我试过这个:

<#@ template debug="true" hostspecific="false" language="C#" #>
<#@ assembly name="MyDLL.dll" #>
<#@ output extension=".cs" #>
<#
    var template = new MyDLL.MyNamespace.MyClass();
        this.Write(template.Run());
#>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误14编译转换:找不到元数据文件"MyDLL.dll"
错误13命名空间不能直接包含字段或方法等成员

即使MyClass.Run()只是一个 return "//hello";

Woj*_*icz 8

好像你的问题:

错误编译转换:找不到元数据文件'dotless.Core'

这是由于此处描述的兼容性中断:

http://weblogs.asp.net/lhunt/archive/2010/05/04/t4-template-error-assembly-directive-cannot-locate-referenced-assembly-in-visual-studio-2010-project.aspx


Kie*_*ron 8

我昨天才遇到同样的问题,我们有一个解决方案级别的Binaries文件夹,所以以下内容对我有用$(SolutionDir)Binaries\Assembly.dll.

但是,根据程序集的位置,您可以使用$(ProjectDir)指令来使用项目相对路径...