如何在 Visual Studio 构建期间构建节点项目,与 C# 项目分开?

Posted

技术标签:

【中文标题】如何在 Visual Studio 构建期间构建节点项目,与 C# 项目分开?【英文标题】:How do I build a node project during a visual studio build, separately from a C# project? 【发布时间】:2021-11-02 06:25:46 【问题描述】:

Visual Studio 2019 附带用于 .net Core 应用的单页应用模板。 React typescript 模板设置项目如下:

Project/Project.sln 中创建解决方案 在Project/WebApi/WebApi.csproj 中创建一个 ASP.NET Core REST 端点示例 在Project/WebApi/ClientApp 文件夹中包含一个单页应用程序。 构建该项目作为构建该项目其余部分的一部分。

我也想这样做,但不是将节点项目嵌入到 C# 项目文件夹中,而是让它们成为同一解决方案中的单独项目。所以而不是:

* Project/Project.sln
* Project/WebApi/Startup.cs // and all other C# code
* Project/WebApi/ClientApp/package.json // and all other node/typescript code

我宁愿像这样设置项目:

* Project/Project.sln
* Project/WebApi/Startup.cs // and all other C# code
* Project/ClientApp/package.json // and all other node/typescript code.

将节点项目从 C# 项目中分离出来并仍然将其作为解决方案构建的一部分进行所有构建的最佳方法是什么?

奖励:我如何仅使用 dotnet 命令执行此操作?

【问题讨论】:

【参考方案1】:

如何实现这一点的基本思想涉及两件事:

    您必须能够从位于单独项目中的 node_modules 提供静态内容(或前端库) 每次构建项目时,都应触发npm install,以确保所有前端依赖项均已到位。

为了能够从 node_modules 提供服务,您要么必须自己修改 UseStaticFiles() 中间件,要么使用 OdeToCode.UseNodeModules 并对其进行调整,以使路径指向不同项目中的文件夹。 最后,可以在 .csproj 文件中设置自动构建后操作。示例:

  <Target Name="PostBuild" AfterTargets="ComputeFilesToPublish">
    <Exec Command="npm install"/>
  </Target>

【讨论】:

以上是关于如何在 Visual Studio 构建期间构建节点项目,与 C# 项目分开?的主要内容,如果未能解决你的问题,请参考以下文章

在VNext构建中执行Visual Studio Test任务期间无法发布测试结果

用于 Visual Studio 的 Apache cordova 在构建期间不会更新 iOS 平台文件

如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建

在使用 Visual Studio 2010 部署/发布期间,一些 dll 丢失

如何添加停止 msbuild 构建项目 Visual Studio 构建选项

如何仅为调试构建运行 Visual Studio 构建后事件