T4 模板生成的文件不包含在项目中



我正在使用 T4 模板(运行时生成(为我的项目(控制器、实体和视图(生成一些.cs文件,这些文件需要由我的控制器的操作动态创建,这些文件将特定数据传递给这些模板。

这是我在操作中生成它们的方式:

 CustomEntity entity = new CustomEntity(entityName, propertyMap);
 String entityContent = entity.TransformText();
 System.IO.File.WriteAllText(Server.MapPath("~") + "\Models\" + entityName + ".cs", entityContent);
 CustomEntityController controller = new CustomEntityController(entityName);
 String controllerContent = controller.TransformText();
 System.IO.File.WriteAllText(Server.MapPath("~") + "\Controllers\" + entityName + "Controller.cs", controllerContent);

它们是正确生成的,但是它们没有包含在我的项目中,所以我无论如何都不能在我的项目中使用它们。只有右键单击文件并"包含在项目中"才能解决此问题,但我需要在我的项目中自动访问它们。

如何解决这个问题?

你可以将动态生成的.cs文件包含在Visual Studio项目中,并包含递归通配符,如本答案中所述。这可以通过手动编辑 csproj 文件来完成。

语法如下(检查您情况下的正确路径(:

<ItemGroup>
  <Compile Include="Models***.cs" />
  <Compile Include="Controllers***.cs" />
</ItemGroup>

最新更新