我有一个包含多个目标的.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>
任何人都知道如何执行此操作吗?
答案 0 :(得分:0)
您需要了解多框架建筑物的工作原理。 它并不需要一个项目,就可以将其构建到多个框架中,而是根据框架的数量启动一些过程。
因此,进程之间没有联系。
但是,我建议您创建一个独立的csproj
文件(它实际上是具有project
配置的msbuild
文件),没有真实的项目,并且在他里面覆盖 npm 命令和构建解决方案的命令> build 目标。
另一种选择是保存msbuild property
或**环境变量`或临时文件等,并在首次执行命令后更新它们的状态,并在命令前检查状态。有一个尚未解决的问题。