我正在建立一个以ASP.NET Core Web API为后端,以React SPA为前端的项目,文件夹结构如下所示:
WebApiProject
│
├── ClientApp/
│ ├── public/
│ ├── src/
│ └── package.json
│
├── Controller/
├── Models/
├── appsettings.json
├── Program.cs
└── Startup.cs
当我将新的npm模块添加到React项目(将更新package.json)并推送到我们的团队Git存储库时,其他团队成员在提取新提交后必须手动在npm install
目录中执行ClientApp
,否则,构建过程将因缺少依赖项而失败。
对于前端开发人员来说,这是很正常的,但是对于仅专注于后端开发的一些开发人员来说,他们必须做一些额外的过程才能构建项目是很麻烦的(他们通常只是,这很好)。
我尝试了以下方法:
将nodejs目录添加到ctrl + F5
,我以为这会确认IDE为我完成了工作,但似乎没有。
原始的Tools -> Options -> External Web Tools
文件提供了这样的方法:
<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" />
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<DistFiles Include="$(SpaRoot)build\**; $(SpaRoot)build-ssr\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.Identity)</RelativePath>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
在发布时,这似乎是ASP.NET项目的某种自动脚本,但我不太了解如何对其进行调整,以使其在开发模式构建时就可以正常工作。
有没有办法使.csproj
的过程与ASP.NET IDE的构建过程一起出现?换句话说,我正在寻找一种在构建ASP.NET项目时自动安装npm模块的方法。
参考方案
您的配置正确,但是仅适用于发布项目,请将其添加到csproj文件中
<Target Name="DebugEnsureNodeEnv" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' And !Exists('$(SpaRoot)node_modules') ">
<!-- Ensure Node.js is installed -->
<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." />
<Message Importance="high" Text="Restoring dependencies using 'npm'. This may take several minutes..." />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
</Target>
这将确保您的项目在启动ASP.Net Core项目之前运行npm install
我是这里的新手。我有一个VS2017 asp.net C#Web应用程序。我目前不在使用Angular。这是一个简单的网站。我隐藏了div,当用户单击菜单项时,相关的div出现,而我隐藏了其余的div。我使用JavaScript完成此任务。在开发和IIS Express中,它可以工作。当我发布到IIS时,它不起作用。静态页面显示“确定”,但菜单按钮不执行任何…
使用Java脚本基于另一个控件项来验证ASP.NET C#控件 - c#我正在尝试确保一个下拉框或另一个下拉框具有选定的条目,不能两者都选,并且不能都留空/未选择。每次单击运行javascript验证代码的搜索按钮时,即使我只是从一个下拉列表中选择,甚至从两个下拉列表中都没有选择,我都会收到一条消息,好像在两个下拉框中都选择了一样!这可能是我的逻辑,但是,我认为也可能是我的变量读为null。是否有人对问题可能是什么以及如何解决这…
ASP.net C#崩溃一行 - c#我有一个母版页,在on load事件中包含以下几行: string menuIDdata = Page.Request.QueryString["mid"]; menuID = 0; // Get the menu ID if (!int.TryParse(menuIDdata, out menuID)) { menuID = 0; } …
如果数字是1或0,则显示不同的图标-ASP.NET C#MVC JQuery - javascript我有一个生成随机数的模型:public int IsLocked { get { var rnd = new Random(); return rnd.Next(0, 2); } } 这是我的局部视图:<table class="table table-striped table-hover dataTable admin-form them…
具有动态集合的MVC模型绑定 - c#根据具有启发性的Scott Hanselman文章中关于ASP.NET Wire Format for Model Binding to Arrays, Lists, Collections, Dictionaries的复杂性: 我们通过查找parameterName[index].PropertyName来读取属性 索引必须从零开始,并且是连续的所以这个H…