当前,当我运行我的项目时,它将执行我设置的构建后命令。但是,仅当项目进行了更改时,这才是正确的。我的最终目标是在每次构建项目时都运行我的项目。但是,我注意到的是,如果要按角度更改HTML文件,则该项目不会检测到任何更改,因此不会再次生成,因此不会运行ng build命令。
是否有一种方法可以强制它始终运行生成后命令,或者即使没有检测到更改也可以使其始终重建?也许还有另一种方法可以做到这一点?
这是一个.NET Core WebApp,运行我的post build事件的代码位于我的.csproj文件中
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="echo Building Angular App..." />
<Exec Command="cd ClientApp && ng build" />
</Target>
答案 0 :(得分:4)
是否有一种方法可以强制它始终运行生成后命令,或者即使没有检测到更改也可以使其始终重建?
最简单的方法是在项目文件中将属性var query = db.Query("SELECT SUM(UserRating) as 'Sum', AVG(UserRating) as 'Average', COUNT(*) as 'Total' FROM ActivityLogs");
query.FirstOrDefault(); // {{DapperRow, Sum= '3', Average = '3', Total = '1'}}
var sum = query[0].Sum; // error!!
设置为true,以禁用DisableFastUpToDateCheck
用于Visual Studio构建管理器:
FastUpToDateCheck
检查MSDN关于DisableFastUpToDateCheck:
仅适用于Visual Studio的布尔值。 Visual Studio生成管理器使用名为FastUpToDateCheck的过程来确定是否必须重建项目以保持最新状态。此过程比使用MSBuild确定此过程更快。 将DisableFastUpToDateCheck属性设置为true可让您绕过Visual Studio构建管理器,并强制其使用MSBuild来确定项目是否最新。
此外,如果您想要一种将构建与构建后命令分开的方法,则可以使用MSBuild命令行直接构建该项目,而无需添加上述设置。
希望这会有所帮助。
答案 1 :(得分:3)
您可以在.csproj文件中配置构建后事件的方式稍有不同,然后按照以下说明将RunPostBuildEvent
设置为Always
:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
...
<PostBuildEvent>cd ClientApp && ng build</PostBuildEvent>
<RunPostBuildEvent>Always</RunPostBuildEvent>
</PropertyGroup>
编辑:正如我在进行了更多测试之后发现的那样,RunPostBuildEvent
的行为不符合我的预期。因此,一种“解决方法”是按照以下说明添加DisableFastUpToDateCheck
:
<PropertyGroup>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
<PostBuildEvent>cd ClientApp && ng build</PostBuildEvent>
</PropertyGroup>
来自MSDN:
仅适用于Visual Studio的布尔值。 Visual Studio 构建管理器使用名为FastUpToDateCheck的过程来确定 是否必须重建项目以保持最新状态。这个过程是 比使用MSBuild确定速度更快。设置
DisableFastUpToDateCheck
的{{1}}属性可让您绕过Visual Studio内部版本管理器,并强制其使用MSBuild来确定是否 该项目是最新的。
显然,这样做的缺点是将始终重建项目,所以这不是理想的解决方案。
答案 2 :(得分:1)
我已通过在项目文件中添加以下属性来解决此问题
<RunPostBuildEvent>Always</RunPostBuildEvent>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
其他人将此问题作为答案发布,但由于某种原因被删除,因此我将其重新发布,以便以后出现的任何人都可以看到我是如何解决的。