【发布时间】:2019-06-17 23:17:23
【问题描述】:
我有一个包含多个目标的.csproj 文件。开头是这样的:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net35;net40;net45;netcoreapp2.0;netstandard2.0</TargetFrameworks>
...
这是一个使用 Selenium 的 C# 项目,需要使用 NPM 自动更新 javascript 文件。每个此类 javascript 文件都应标记为 Embedded Resource。
我在构建之前尝试了几种方法来运行 NPM。我尝试编写一个在构建之前运行的批处理文件,我尝试安装 Nuget 扩展来更新 NPM,甚至尝试添加一个更新文件的预构建事件。
问题是,它发生在每个目标上,而我只需要在构建开始之前发生一次。
我搜索了 Microsoft 提供的所有相关 MSBuild 文档以寻找解决方案,但徒劳无功。
目前我像这样更新脚本:
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="cd $(ProjectDir)Properties\NodeResources
call npm update && copy node_modules\mycompany\firstpackage\dist ..\Resources && copy node_modules\mycompany\secondpackage\dist ..\Resources" />
</Target>
<ItemGroup>
<None Remove="Properties\Resources\script1.js" />
<None Remove="Properties\Resources\script2.js" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\Resources\script1.js" />
<EmbeddedResource Include="Properties\Resources\script2.js" />
</ItemGroup>
有人知道怎么做吗?
【问题讨论】:
标签: c# npm msbuild pre-build-event