Visual Studio 2013 と SSDT で TFS を使用して、さまざまな SQL データベース スクリプトを作成しています。つまり、 SSMS ではなくVS を介してすべての SQL DB 開発を行っています。
私が今達成しようとしているのは、ここに投稿された機能に基づいて、プロジェクトのビルド/公開時に外部テキスト ファイルからバージョン番号を生成/取得することです。
http://www.codeproject.com/Articles/468855/Working-with-MSBuild-Part-2
そこで、MyProject.sqlproj
xml ファイルに以下を追加しました。
<PropertyGroup>
<WorkingFolder>C:\Source Control\MISTP\Main\DB\SSMS\MyProject</WorkingFolder>
</PropertyGroup>
<Target Name="GetVersion">
<Message Text="GetVersion: Reading version number from VersionInfo.txt" />
<Attrib Files="$(WorkingFolder)\VersionInfo.txt" Normal="true" />
<Version VersionFile="$(WorkingFolder)\Build\VersionInfo.txt">
<Output TaskParameter="Major" PropertyName="Major" />
<Output TaskParameter="Minor" PropertyName="Minor" />
<Output TaskParameter="Build" PropertyName="Build" />
<Output TaskParameter="Revision" PropertyName="Revision" />
</Version>
<Message Text="GetVersion: $(Major).$(Minor).$(Build).$(Revision)" />
</Target>
<Target Name="SetVersion" DependsOnTargets="GetVersion">
<Message Text="SetVersionInfo: Updating Versions in all files" />
<CreateItem Include="$(WorkingFolder)\**\*.*">
<Output TaskParameter="Include" ItemName="Files"/>
</CreateItem>
<Attrib Files="@(Files)" Normal="true" />
<FileUpdate Files="@(Files)" Regex="FileVersionAttribute\("(\d+)\.(\d+)\.(\d+)\.(\d+)"\)" ReplacementText="FileVersionAttribute("$(Major).$(Minor).$(Build).$(Revision)")" />
<FileUpdate Files="@(Files)" Regex="FileVersion\("(\d+)\.(\d+)\.(\d+)\.(\d+)"\)" ReplacementText=" FileVersion ("$(Major).$(Minor).$(Build).$(Revision)")" />
<FileUpdate Files="@(Files)" Regex="FileVersion\("(\d+)\.(\d+)\.(\d+)\.(\d+)"\)" ReplacementText="FileVersion("$(Major).$(Minor).$(Build).$(Revision)")" />
</Target>
VersionInfo.txt
次の場所にファイル
があります。C:\Source Control\MISTP\Main\DB\SSMS\MyProject\Build
これには、次の文字列が含まれています。1.2.3.4
ただし、VS内でプロジェクトをビルドおよび/または公開すると、これは実際には何もしないようです。何が足りないの?!
私は MSBuild を初めて使用しますが、構文は正しいように見えます (codeproject の記事から大幅に引用されています)。ファイルへのパスも問題ありません。
xmlが実行されていないように感じますが、.sqlprojファイルに非常に存在すると実行されると思います。
ありがとう