Geo*_*Geo 5 msbuild asp.net-web-api angular
我有一个带有角度cli的角度应用程序构建。我希望我的Web API从wwwroot文件夹提供静态文件。我还想将两个项目很好地分开放在自己的文件夹中。这是我的解决方案的结构:
.\angular-app
.\angular-app\angular-cli.json
.\web-api-app
.\web-api-app\wwwroot
Run Code Online (Sandbox Code Playgroud)
给定我的应用程序的这种结构,我想要配置msbuild脚本web-api-app.csproj以某种方式从angular-app内触发“ ng构建”,并将构建输出到wwwroot文件夹中。
因此,我将.angular-cli.json中的“ outDir”参数修改为:“ ../ web-api-app / wwwroot”,以便当我在angular-app中调用“ ng build”时,webpack输出结果在wwwroot文件夹中。
如何设置MsBuild脚本,以便在我调用“ dotnet build -c Release”时将角度很好地包装在wwwroot文件夹中?
我找到了一种方法,可以从我的msbuild内调用“ ng build”。诀窍是在DotNetCore应用程序的根目录内使用一个npm脚本,将其“ cd”到angular应用程序中,然后调用“ ng build”。我采取的步骤是:1)为了能够使用npm脚本命令,请编辑angular-app的package.json的脚本部分:(在这里,我还定义了一个启动脚本,可以轻松地启动本地开发环境并构建为能够在调试模式下构建我的脚本)
"scripts": {
"start": "ng serve --proxy-config proxy.conf.json",
"build": "ng build",
"build-prd": "ng build --prod --env=prod",
}
Run Code Online (Sandbox Code Playgroud)
2)使用Web-Api应用程序,在web-api应用程序的根目录内添加package.json,其中包含:
"scripts": {
"install": "cd ../angular-app & npm install",
"start": "cd ../angular-app & npm start",
"build": "cd ../angular-app & npm run-script build",
"build-prd": "cd ../angular-app & npm run-script build-prd"
}
Run Code Online (Sandbox Code Playgroud)
3)最后,配置您的Web-api MsBuild脚本以在运行发行版时调用ng构建脚本。因此,将以下目标添加到csproj文件中:
<Target Name="EnsureNode">
<Exec Command="node --version" ContinueOnError="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode" />
</Exec>
<Error Condition="'$(ErrorCode)' != '0'" Text="Node.js is required to build and run this project. To continue, please install Node.js from https://nodejs.org/, and then restart your command prompt or IDE." />
</Target>
<Target Name="ReleaseRunNgBuild" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Release' ">
<CallTarget Targets="EnsureNode" />
<Message Importance="high" Text="Install packages..." />
<Exec Command="npm install" />
<Message Importance="high" Text="Performing ng build for prd build..." />
<Exec Command="npm run-script build-prd" />
</Target>
Run Code Online (Sandbox Code Playgroud)
我创建了一个示例应用程序,您可以在我的github项目core-angular-example上找到完整的源代码,并且此博客文章还详细描述了每个步骤。
| 归档时间: |
|
| 查看次数: |
1995 次 |
| 最近记录: |