这是一个相当宽泛的问题,因为它取决于如果您正在使用ASP DOTNET的框架或DOTNET的ASP核心。这也取决于你是否在做一个真正的SPA(单页面应用程序),或者你是否也在混合一些RAZR页面。
我正在为ASP.NET,Angular和Ag-Grid系列教程工作。我有一个解决方案,用于Visual Studio 2017 ASP DotNet Core基础网站,用于提供数据的REST控制器,以及用于Windows 7上的Angular 4 SPA的单个index.html。这些步骤对我来说都很合适。这是答案,但这是因为有很多步骤可以让ASP DotNet Core,MVC,Angular 4和ag-grid一起合作。
摘要
做一个空的ASP.NET核心的Web应用程序(.NET核心)
修复Startup.cs只投放的wwwroot/index.html的
将简单的ag网格角度样本下载到web文件夹中,告诉它 将转发的输出复制到wwwroot文件夹中
运行Visual Studio中,它就会打开从C#代码的浏览器提供
详细步骤
此例子的 角4 SPA页面,显示在动作AG-格假设我将制作一个解决方案c:\ code \ Elephant \ ElephantSolution和一个子目录... \ ElephantSolution \ ElephantWeb和一个web项目。 “Elephant”这个名字是随机的,实际的目录位置并不重要,但我保持一致,所以这些步骤更有意义。
的Visual Studio 2017年,项目文件/新建/项目
挑选模板/的Visual C#/。NET内核/ ASP.NET核心Web应用程序(。NET核心)
- 名称:ElephantWeb
- 位置:C:\代码\大象
- 解决方案名称:ElephantSolution
- ASP.NET 1.1的核心模板:空
我可以在Visual Studio中运行它并获取“Hello World!”如预期。
接下来,我必须插入Angular 4.为了准备,告诉Visual Studio不要尝试编译打字稿(否则它会尝试编译所有的角)。编辑ElephantWeb.csproj,在<ProjectGroup>
之内;添加:
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
另外补充下<Project>
<ItemGroup>
<Compile Remove="angular\node_modules\**" />
<Content Remove="angular\node_modules\**" />
<EmbeddedResource Remove="angular\node_modules\**" />
<None Remove="angular\node_modules\**" />
</ItemGroup>
这一部分如果如果您还没有您尚未安装的NodeJS
,安装角
npm install @angular/cli --global
从DOS,进入web项目目录
mkdir c:\code\Elephant\ElephantSolution\ElephantWeb\angular
cd c:\code\Elephant\ElephantSolution\ElephantWeb\angular
复制AG-电网从https://github.com/ag-grid/ag-grid-angular-seed/tree/master/angular-cli角样品到... \ ElephantWeb \角
告诉角度编译到Visual Studio “wwwroot文件” 文件夹而不是“dist”。这使Visual Studio服务器角网页。编辑... \ ElephantWeb \ angular.angular-cli.json,改变
"outDir": "dist",
到
"outDir": "..\wwwroot",
从DOS,执行初始编译强制的角度理清所有依赖和下载。
npm install
做一些Visual Studio中的NuGet更新做好准备在Visual Studio
- 服务的角度,从包管理器控制台安装,包装Microsoft.AspNetCore.StaticFiles -version 1.1.2
- Install-Package Microsoft.AspNetCore.Mvc -version 1.1.3
- Install-Package Microsoft.AspNetCore.Session -version 1.1.2
告诉Visual Studio Web项目将所有非API调用提供给“index.html”。更改启动。CS启动类这样的:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404 &&
!Path.HasExtension(context.Request.Path.Value) &&
!context.Request.Path.Value.StartsWith("/api/"))
{
context.Request.Path = "/index.html";
await next();
}
});
app.UseMvcWithDefaultRoute();
app.UseStaticFiles();
loggerFactory
.AddConsole();
}
}
编译的角度,从DOS,并保留作为编译发生变化
cd \code\Elephant\ElephantSolution\ElephantWeb\angular
ng build --watch
确保它转储角的脚手架的index.html和transpiled * .js文件之中。 .. \ ElephantWeb \ wwwroot
运行Visual Studio,它应该编译C#代码,启动浏览器,并显示ag-grid示例。
让我知道是否有任何这种格式变得混乱。因为有太多的文件和步骤,所以这实际上不适用于Plunkr。我试图在步骤中明确表达,但不会陷入太多细节。让我知道是否有助于获得更多信息。
非常感谢您的详细解答,您是对的,我忘了提及我正在使用的框架。我正在使用常规的.NET Framework,因为我已经有了这种格式的项目。我正在使用带有MVC模板的.NET Framework,因此我使用Razer,多个页面和一个小型数据库,我试图使用ag-grid来显示。因为它是一个.NET框架,我猜想整个wwwroot的东西不会工作? – Vaethin
此外,我希望不必使用Angular CLI进行编译 - 我尝试过,它的工作,有点,但我不能用VS编译了,不得不使用2个控制台(一个用于dotnet,一个用于ng服务)和一个代理配置文件,而不是...我现在的方式似乎一切顺利,在正确的地方,我唯一的问题是,VS工作室告诉我,ag_grid模块无法找到,即使main.d.ts文件是definetly它的意思。 – Vaethin
我找到了TypeScriptCompileBlocked选项,错误代码消失了,但它根本不运行应用程序......只是说“加载” – Vaethin