【发布时间】:2013-07-18 14:37:46
【问题描述】:
tl;dr:如何在使用ClickOnce 发布期间修改.csproj 文件,同时执行预构建事件?
长: 我正在使用 Microsoft 托管的 TFS 对我的解决方案进行版本控制。
当使用ClickOnce 发布时,我得到最新的修订号 + 1 没有问题。我还可以成功地将新版本号写入我的构建过程之外的.csproj 文件中。
问题是,.csproj 文件在构建过程中没有得到更新 - 它可能处于写锁定状态。我在 Notepad++ 中收到有关文件修改的通知,但文件仍然包含旧版本,VS 没有注意到任何更改。
目前我找到解决此问题的唯一解决方案: 将修订更新移动到构建后事件中,并将 2 而不是 1 添加到实际修订号。不幸的是,当其他开发人员签入代码时,这将导致修订号过时。
【问题讨论】:
-
即时更新项目文件是个坏主意,您最好创建一个目标文件,在正确的阶段更新变量的值。如果您想尝试现在正在做的事情,请关闭 msbuild 的托管。 blog.jessehouwing.nl/2012/06/…
-
@jessehouwing 我同意你的想法。但是不会是任何阶段——无论我把它放在哪里——都会导致 .csproj 文件发生变化? MsBuild 读取 csproj 文件的版本号,而不是从例如使用 ClickOnce 发布时的 AssemblyInfo.cs。
标签: visual-studio-2012 tfs clickonce csproj pre-build-event