我正在考虑在 .NET 3.5 和 Silverlight 3 之间共享我的类库代码。
由于我主要为 .NET 开发,我正在研究从相应的 .NET 项目文件自动生成 Silverlight 项目文件。
因此,我有一个 T4 文件,它在 Silverlight 中抱怨以下错误消息:
错误 1 编译转换:名称空间“System.CodeDom.Compiler”中不存在类型或名称空间名称“CompilerError”(您是否缺少程序集引用?)
错误 2 编译转换:“System.CodeDom.Compiler.CompilerErrorCollection”类型在未引用的程序集中定义。您必须添加对程序集“System,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”的引用。
错误 3 编译转换:“System.CodeDom.Compiler.CompilerErrorCollection”不包含“Add”的定义,并且找不到接受“System.CodeDom.Compiler.CompilerErrorCollection”类型的第一个参数的扩展方法“Add”(是您缺少 using 指令或程序集引用?)
我的重点表明我缺少对 System.dll 的引用。
如果我添加以下行:
<#@ assembly name="System" #>
然后 .NET 项目抱怨:
错误 1 编译转换:已导入具有相同标识 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 的程序集。尝试删除重复引用之一。
看起来我只需要更改构建 Silverlight 项目的代码,以便它只添加生成的 .cs 文件,而将 .tt 文件排除在外。
或者我可以做些什么来让两个编译器都满意?
这是我的 .TT 文件的开始:
<#@ template language="C#v3.5" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System" #>
<#@ output extension=".Designer.cs" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections.Generic" #>