我找到了一种能够从我的 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",
}
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"
}
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>
我创建了一个示例应用程序,您可以在my github project core-angular-example 和this blog post 上找到整个源代码,还详细描述了每个步骤。