gpt4 book ai didi

asp.net-mvc - Visual Web Developer Express 中的 SubSonic ASP.NET MVC 示例

转载 作者:行者123 更新时间:2023-12-02 13:11:30 25 4
gpt4 key购买 nike

在 Visual Web Developer Express 2008 中,SubSonic ASP.NET MVC 模板似乎不适用于我添加的新数据库。我删除了 Chinook 数据库并创建了自己的数据库。我知道 Models 文件夹中的 .tt 文件用于生成代码,但它们不会(尽管将 ConnectionStringName 更改为我在 web.config 中设置的内容)

右键单击每个 .tt 文件并选择“运行自定义工具”不会生成任何内容,除了错误消息之外:

Cannot find custom tool 'TextTemplatingFileGenerator' on this system.

该工具保存在哪里? CodeTemplates 中有 .tt 文件,当您创建新的 Controller 或 View 时会使用这些文件,因此我假设有一个工具可以执行此操作。

最佳答案

跟随Adam's评论,您可以在 VS Express 中执行此操作,但需要按照 Adam 的建议对模板进行更改。

Visual Studio 要求仅用于获取事件项目的路径,然后用于查找 web.config 文件和 app_data 路径。由于这些值在项目中通常是已知的,因此我们可以对替代值进行硬编码

像这样更新 _Settings.tt 文件:

...
const string ConnectionStringName="Chinook";
//Use this when not building inside visual studio standard or higher
//make sure to include the trailing backslash!
const string ProjectPathDefault="c:\\path\\to\\project\\";

...

public EnvDTE.Project GetCurrentProject() {

if (Host is IServiceProvider)
{
IServiceProvider hostServiceProvider = (IServiceProvider)Host;
if (hostServiceProvider == null)
throw new Exception("Host property returned unexpected value (null)");

EnvDTE.DTE dte = (EnvDTE.DTE)hostServiceProvider.GetService(typeof(EnvDTE.DTE));
if (dte == null)
throw new Exception("Unable to retrieve EnvDTE.DTE");

Array activeSolutionProjects = (Array)dte.ActiveSolutionProjects;
if (activeSolutionProjects == null)
throw new Exception("DTE.ActiveSolutionProjects returned null");

EnvDTE.Project dteProject = (EnvDTE.Project)activeSolutionProjects.GetValue(0);
if (dteProject == null)
throw new Exception("DTE.ActiveSolutionProjects[0] returned null");

return dteProject;
}
return null;
}

...

public string GetConfigPath(){
EnvDTE.Project project = GetCurrentProject();
if (project != null)
{
foreach(EnvDTE.ProjectItem item in project.ProjectItems)
{
// if it is the configuration, then open it up
if(string.Compare(item.Name, "Web.config", true) == 0)
{
System.IO.FileInfo info =
new System.IO.FileInfo(project.FullName);
return info.Directory.FullName + "\\" + item.Name;
}
}
return "";
}
else
{
return ProjectPathDefault+"web.config";
}
}

public string GetDataDirectory(){
EnvDTE.Project project=GetCurrentProject();
if (project != null)
{
return System.IO.Path.GetDirectoryName(project.FileName)+"\\App_Data\\";
}
else
{
return ProjectPathDefault+"App_Data\\";
}
}
...

然后使用VS外部工具功能设置T4工具(工具->外部工具):设置这些属性:

  • 标题:T4
  • 命令: C:\Program Files\Common Files\Microsoft共享\TextTemplate\1.2\TextTransform.exe
  • 参数: $(ProjectDir)\Models\Classes.tt
  • 初始目录: $(ProjectDir)
  • 应选中使用输出窗口提示输入参数

单击“确定”,然后从“工具”->“外部工具”菜单执行新创建的工具。

关于asp.net-mvc - Visual Web Developer Express 中的 SubSonic ASP.NET MVC 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/786734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com