我有一个* .tt文件(实际上是两个,但它们的行为相似,所以我只谈一个)。
我把它们设置得像另一个项目,它们工作得很好。它们的属性设置相同,例如:
CustomTool = TetxtTemplatingFilePreprocessor
当我选择"运行自定义工具"时,会创建相应的* .cs文件:
// ------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version: 10.0.0.0
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------
但项目不会编译,因为自动生成的文件中的代码 (FormTemplate.cs):
FormTemplate formTemplate = new FormTemplate(POST, this);
output.Write(formTemplate.TransformText());
...不会编译。错误是,&#34;&#39; QuizModule.QuizModuleWebPart.Templates.FormTemplate&#39;不包含&#39; TransformText&#39;的定义并没有扩展方法&#39; TransformText&#39;接受类型&#39; QuizModule.QuizModuleWebPart.Templates.FormTemplate&#39;的第一个参数。可以找到&#34;
如何生成代码,然后无法找到它引用的方法?实际上, 生成了该方法,它就在FormTemplate.cs中:
#line 1
"C:\Projects\QuizModule_Test\QuizModule_Test\QuizModuleWebPart\Templates\FormTem
plate.tt"
[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "10.0.0.0")]
public partial class FormTemplate : FormTemplateBase
{
{
public virtual string TransformText()
{
为什么它看不到自己的方法?
结果证明这是其中一个&#34;我的坏人&#34;这看起来似乎是错误的信息。发生的事情是,我的一些命名空间是错误的 - 代码已经从另一个项目逐字复制,并且命名空间尚未更新。一旦这些问题得到纠正,该项目编制得很好。
答案 0 :(得分:1)
原因
结果证明这是其中一个&#34;我的坏人&#34;这看起来似乎是错误的信息。
解决方案
发生的事情是,我的一些命名空间是错误的 - 代码已经从另一个项目逐字复制,并且命名空间尚未更新。一旦这些问题得到纠正,该项目编制得很好。