我有一个.Net Core API项目,其中包括Angular版本7项目,因此,我不想每次都手动更改index.html源代码,
index.html
<base href="/">
每次构建时手动 开发版本(VS-> href =“ /”-> IIS Express),然后进行构建 Visual Studio的正式版发布(VS-> href =“ / ProjectName /”->右键单击Project-> Publish ...), 我相信这没有道理!
当我通过VS发布功能发布并构建角度项目时,我无法访问此命令,
ng build --prod --base-href / ProjectName /或此命令的任何其他类型
我正在寻找一种解决方案,可以通过配置或类似方法来解决此问题。
非常感谢!
答案 0 :(得分:1)
因此,基于@savinn解决方案,它很吸引人,我尝试再解释一次该解决方案,
在Angular项目Veriosn 7中,我有index.hmtl,就像这样
index.html
<base href="/">
它可以正常运行以在IIS Express(F5)上的开发模式下运行应用程序,
但是对于生产模式,您需要这样定义项目名称
index.html
<base href="/ProjectName/">
但是您不能每次都更改它并检入源代码,因此基于@savinn解决方案,您可以设置
package.json
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --prod --aot --base-href /ProjectName/",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
现在,当您通过Visual Studio 2017在IIS上发布项目时,它将运行此ng构建,并且在IIS上已发布的index.html文件上您可以看到此
在IIS上发布index.html,ClientApp \ dist \ index.html
<base href="/ProjectName/">
因此可以在不更改index.html的情况下将应用程序作为开发模式运行,并通过VS在IIS上发布进行发布。
答案 1 :(得分:0)
将其添加到package.json以构建脚本 “ build”:“ ng build --prod --aot --base-href / ProjectName /”
答案 2 :(得分:0)
我在Angular8项目中使用.net核心MVC。
我更新了csproj文件,以便为npm构建操作设置base-href。
步骤:
<Choose> <When>
msbuild元素 用于基于“构建配置”参数设置base-href变量。
<Choose>
<When Condition="'$(Configuration)' == 'Debug' Or '$(Configuration)' == 'Release'">
<PropertyGroup>
<BaseHref>/</BaseHref>
</PropertyGroup>
</When>
<When Condition="'$(Configuration)' == 'environment'">
<PropertyGroup>
<BaseHref>/BaseHrefUrl/</BaseHref>
</PropertyGroup>
</When></Choose>
<BaseHref>
是自定义元素
<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build -- --prod --base-href $(BaseHref)" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr -- --prod" Condition=" '$(BuildServerSideRenderer)' == 'true' " />
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
<DistFiles Include="$(SpaRoot)node_modules\**" Condition="'$(BuildServerSideRenderer)' == 'true'" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.Identity)</RelativePath>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
基于“选择时间”条件,它将设置BaseHref
npm运行构建---prod --base-href / BaseHrefUrl /
ng构建“ --prod”“ --base-href”“ / BaseHrefUrl /”