【发布时间】:2016-12-19 14:00:26
【问题描述】:
我们有通过 ClickOnce 发布的 WPF 应用程序。
每次成功发布后,我都需要将 ClickOnce 版本号(自动递增)保存到数据库中。
有没有像OnPublishSucces这样发布后可以触发数据库操作的事件?
【问题讨论】:
标签: database numbers save version clickonce
我们有通过 ClickOnce 发布的 WPF 应用程序。
每次成功发布后,我都需要将 ClickOnce 版本号(自动递增)保存到数据库中。
有没有像OnPublishSucces这样发布后可以触发数据库操作的事件?
【问题讨论】:
标签: database numbers save version clickonce
我为此苦苦挣扎了几个小时,最终从几个不同的来源拼凑了一个答案(绝对不是我自己做的)。此代码位于 csproj 文件的结束标记之前。您无法通过 IDE 更改发布后事件。因此 Target Name="AfterPublish" 仅在发布事件而不是构建之后触发。下面的代码获取应用程序版本。该命令利用 SQLCMD.exe 应用程序来执行查询。
<Target Name="AfterPublish">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="Targets" />
</GetAssemblyIdentity>
<ItemGroup>
<VersionNumber Include="@(Targets->'%(Version)')" />
</ItemGroup>
<Exec Command=""C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.exe" -S SERVERNAME -U USERNAME -P PASSWORD -d DATABASENAME -Q "UPDATE [TABLENAME] SET [COLUMNNAME] = '@(VersionNumber)'"" />
</Target>
显然,用您自己的参数替换大写字母参数并使用 " 在命令引号中需要双引号的地方(在这种情况下,围绕 SQLCMD 的文件路径和查询本身。
希望对您有所帮助。
【讨论】: