繁体   English   中英

ASP.NET Core项目加载时间

[英]ASP.NET Core project load time

我有一个正在使用的ASP.NET Core / MVC Core应用程序,但是,当我第一次将项目加载到Visual Studio中时,加载它需要花费一定的时间(20分钟)。

我不确定是什么导致了加载时间的延长,但是它不是Visual Studio本身,因为其他项目的加载速度要快得多,我可以肯定的是,这个单独的项目可以正常工作,并且我已经在另一台笔记本电脑上尝试过,它在那里也花了时间

我也尝试过使用/ SafeMode开关启动Visual Studio,但这没有什么区别。

我正在使用Visual Studio 2015企业版

以下是我的project.json的副本,以防有人发现它的潜在问题

{
  "devDependencies": {
    "gulp": "3.9.1"
  },

  "userSecretsId": "SP2017-5731e8a3-a3ec-4a25-bcb5-asdf2432hjk232",

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "MySql.Data.EntityFrameworkCore": "7.0.6-IR31",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": {
      "version": "1.0.1",
      "type": "build"
    },
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "SendGrid.Core": "1.0.0",
    "SendGrid.NetCore": "1.0.0-rtm-00002"
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8"
      ]
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "Areas/**/*.cshtml",
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "appsettings.production.json",
      "web.config",
      "project.json"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

编辑12年1月12日格林尼治标准时间00:30:

  • 一个新的简单ASP.NET CORE MVC网站可以轻松快速地打开
  • 我正在运行Visual Studio 2015 Update 3
  • 我在Surface Pro 4 i7 / 16GB / 512GB SSD上运行它
  • 我已在安全模式下运行Visual Studio(devenv.exe / SafeMode会禁用包括ReSharper在内的扩展,加载时间没有增加)
  • 这个问题早于我添加SendGrid依赖项,因此与此无关。
  • 我现在已更新到最新的可用工具(dotnet-win-x64.1.1.0.exe)

我还要提到的是,我已经完成了将其关闭然后重新打开的古老爱好!

这是我的project.json文件的更新副本

{
  "devDependencies": {
    "gulp": "3.9.1"
  },

  "userSecretsId": "SP2017-5731e8a3-a3ec-4a25-bcb5-asdf2432hjk232",

  "dependencies": {
    "Microsoft.NETCore.App": "1.1.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Pomelo.EntityFrameworkCore.MySql": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "SendGrid.Core": "1.0.0",
    "SendGrid.NetCore": "1.0.0-rtm-00002",
    "BundlerMinifier.Core": "2.2.306",
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.2",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.1.0",
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.1.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Routing": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.1.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0"
  },

  "tools": {
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8"
      ]
    }
  },

  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "runtimes": {
    "win10-64": {} 
  },

  "publishOptions": {
    "include": [
      "Areas/**/*.cshtml",
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "appsettings.production.json",
      "web.config",
      "project.json"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

我想我可能会找到原因,但没有找到解决方法。

我隐约记得在添加一些Bower依赖项后出现此问题,这是否可能是原因(我曾尝试删除所有Bower依赖项

我的bower.json文件当前看起来像

{
  "name": "asp.net",
  "private": true,
  "dependencies": {
    "bootstrap": "3.3.6",
    "jquery": "2.2.0",
    "jquery-validation": "1.14.0",
    "jquery-validation-unobtrusive": "3.2.6",
    "font-awesome": "4.6.1",
    "admin-lte": "*",
    "material-design-icons": "2.2.3",
    "startbootstrap-creative": "3.3.7"
  }
}

我刚刚将其添加到我的新模板化解决方案中,并且软件包还原正在花费时间。 所以我想知道Visual Studio是否在打开解决方案时调用Bower Restore?

这是一个可行的建议。

我建议将.netcore更新为1.1,因为1.0存在很多问题。通过在nuget控制台中运行此程序,可以在Install-Package Microsoft.NETCore.App中运行

另一个问题可能是您正在加载失败或无法正常工作的依赖项。

例如,它可能正在加载发送网格,并且发送网格非常慢,这可能就是原因。

尝试运行一个没有任何依赖项的非常简单的应用程序,看看是否得到相同的结果。

如果您有Resharper,请尝试从VS选项菜单中将其挂起,然后看看会发生什么。 我也遇到了Resharper处于活动状态的asp.net核心项目的更长的加载时间。 使用暂停的Resharper,解决方案加载速度足够快

如果这些不是最新的,请尝试这些更新

  1. 更新您visual studio ,以最新Visual Studio Update 3

  2. 将您的Visual Studio 2015 Tools更新为最新的最新Visual Studio 2015 Tools (Preview 2)

  3. .NET Core更新为最新的最新.NET Core 1.1 SDK

然后更新您的项目以使用此处所述的最新.Net Core SDK ,并更新nuget所有软件包。

因此事实证明,罪魁祸首实际上是在凉亭依赖关系中

"material-design-icons": "2.2.3"

从我的bower.json文件中删除此文件(并从相应的wwwroot / lib文件夹中删除它)之后,我的解决方案现在可以在大约10-15秒(比20分钟快得多)中加载。

出于兴趣,我创建了一个新文件夹(非VS / asp.net核心文件夹),先清除bower缓存 ,再运行bower.init ,然后运行bower install material-design-icons ,仅花了10分钟即可安装此1个软件包。 /依赖

原来,这个程序包是43.7MB(磁盘上为81.5MB),不是我的互联网速度(16ms ping,104.5Mbps下载,6.3Mbps上传)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM