将preublish部分添加到asp.net Core * .csproj文件中

时间:2018-01-24 09:33:56

标签: asp.net webpack asp.net-core publish

我在我的asp.net Core MVC中使用webpack来捆绑js / css文件并将其放入wwwroot文件夹中。

我的文件夹结构在屏幕上显示:

enter image description here

我在FrontEnd.csproj中添加了“after-build”部分:

<Target Name="BuildClientAssets" BeforeTargets="Build">
  <Exec Command="npm install"/>
  <Exec Command="npm run build"/>
</Target>
  1. FrontEnd / node_modules 包含由“npm install”命令加载的npm模块;
  2. Web / wwwroot / dist和Web / wwwroot / fonts 包含由“npm run build”命令生成的捆绑的js / css / fonts文件;
  3. 它按预期工作。但如果我有机会在发布网络项目上执行此命令,那就太棒了。

    但是当我尝试将preublish部分添加到Web项目并开始发布

    <Target Name="BuildClientAssets" BeforeTargets="Publish">
      <Exec Command="npm install"/>
      <Exec Command="npm run build"/>
    </Target>
    

    我收到此错误:命令“npm run build”退出,代码为-4058

    我认为,这是因为package.json位于FrontEnd项目中(不在Web项目中),所以我找了一个合适的脚本以正确的方式启动命令并覆盖了该部分:

    <Target Name="BuildClientAssets" BeforeTargets="Publish">
      <Exec Command="npm install" />
      <Exec Command="webpack --config ../Condenast.FrontEnd/webpack.config.js" />
    </Target>
    

    但是在我收到错误之后:

    无法解决'D:\ RubiusProjects \ Git \ condenast-core-vue \ LMPro.Web'中的'./rc/components/app/report/report.ts'。条目中的LMPro.Web错误模块未找到0

    错误无法解析'D:\ RubiusProjects \ Git \ condenast-core-vue \ LMPro.Web'中的'。/rc/components/app/login/login.ts''LMPro.Web ERROR in找不到输入模块0

    错误无法解析'D:\ RubiusProjec ts \ Git \ condenast-core-vue \ LMPro.Web'中的'source-map-loader':找不到LMPro.Web模块0

    该命令已启动,但仍会在Web中搜索模块,而不是FrontEnd项目。

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

npm install也没有找到正确的文件夹,您需要在正确的位置运行这些命令-可能已在您的计算机上运行,​​因为它已经具有节点模块。您可以保留两个命令(ǹpm install / npm run build)并尝试定位正确的位置。你该怎么做?您可以通知命令他将运行的文件夹。

首先,在PropertyGroup部分中设置前端文件夹位置

<FrontRoot>../Condenast.FrontEnd/</FrontRoot>

,然后使用WorkingDirectory属性在命令行中传递该属性。看起来像这样:

<Target Name="BuildClientAssets" BeforeTargets="Publish">
  <Exec WorkingDirectory="$(FrontRoot)" Command="npm install"/>
  <Exec WorkingDirectory="$(FrontRoot)" Command="npm run build"/>
</Target>

类似的情况here