0

Visual Studio 2013 と SSDT で TFS を使用して、さまざまな SQL データベース スクリプトを作成しています。つまり、 SSMS ではなくVS を介してすべての SQL DB 開発を行っています。

私が今達成しようとしているのは、ここに投稿された機能に基づいて、プロジェクトのビルド/公開時に外部テキスト ファイルからバージョン番号を生成/取得することです。

http://www.codeproject.com/Articles/468855/Working-with-MSBuild-Part-2

そこで、MyProject.sqlprojxml ファイルに以下を追加しました。

<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\(&quot;(\d+)\.(\d+)\.(\d+)\.(\d+)&quot;\)" ReplacementText="FileVersionAttribute(&quot;$(Major).$(Minor).$(Build).$(Revision)&quot;)" /> 
    <FileUpdate Files="@(Files)" Regex="FileVersion\(&quot;(\d+)\.(\d+)\.(\d+)\.(\d+)&quot;\)" ReplacementText=" FileVersion (&quot;$(Major).$(Minor).$(Build).$(Revision)&quot;)" /> 
    <FileUpdate Files="@(Files)" Regex="FileVersion\(&quot;(\d+)\.(\d+)\.(\d+)\.(\d+)&quot;\)" ReplacementText="FileVersion(&quot;$(Major).$(Minor).$(Build).$(Revision)&quot;)" /> 
</Target>

VersionInfo.txt次の場所にファイル があります。C:\Source Control\MISTP\Main\DB\SSMS\MyProject\Build

これには、次の文字列が含まれています。1.2.3.4

ただし、VS内でプロジェクトをビルドおよび/または公開すると、これは実際には何もしないようです。何が足りないの?!

私は MSBuild を初めて使用しますが、構文は正しいように見えます (codeproject の記事から大幅に引用されています)。ファイルへのパスも問題ありません。

xmlが実行されていないように感じますが、.sqlprojファイルに非常に存在すると実行されると思います。

ありがとう

4

1 に答える 1