【发布时间】:2015-03-17 18:10:10
【问题描述】:
TL;DR
我是否可以有一个 Visual Studio 预构建事件来跳过项目的构建而不会出现视觉错误?
详情
我有一个项目,其中包含一个自定义 XML 文件和一个 Powershell 脚本,该脚本在 pre-build 事件期间从 XML 生成资源文件。
我的目标是仅在 XML 文件发生更改时才构建项目。我已经可以确定文件是否已更改,但我无法通知 Visual Studio 跳过构建。要么我用退出代码0(让构建继续)或任何其他数字(在错误列表中显示一个丑陋的错误)停止脚本。
我可以让pre-build 脚本决定是构建还是跳过项目?
示例
# Check to see if the current file is different from the file copied during build.
if((Test-Path $buildXmlFile) -and (Compare-Object -ReferenceObject (Get-Content $projectXmlFile) -DifferenceObject (Get-Content $buildXmlFile))){
Write-Host "Changes found! Rebuilding!"
} else {
Write-Host "No changes found! Skipping Build"
# Exit 0 will cause it to still build...
# Exit -1, Exit 1, etc. will cause a big error to show...
# HOW DO I SKIP???
}
【问题讨论】:
-
所以你只想在xml文件更改时构建?不是在其他源文件更改时?
-
是的,但真正的问题是我能否使构建从预构建事件中跳过(而不是失败)。
-
我认为您不能在预构建脚本中执行此操作。我认为这一切只是通过不重建未更改的项目来加速构建。我知道的唯一方法是通过目标输入和输出。见How to: Build Incrementally。您可以在 proj 文件中使用 BeforeTargets="Build" 将生成步骤添加为目标,输入为 xml 文件,输出为任何生成的文件。
标签: xml visual-studio powershell build pre-build-event