TeamCity 8 と MSBuild Publish タスクを使用して Visual Studio 2012 SSDT プロジェクトを Sql Server にデプロイしようとしていますが、デプロイに失敗します。
TeamCity ログを見て、ビルド構成で /v:diag スイッチを使用すると、不明な理由で MSBuild がMyProject .sqlproj .publish.sql およびMyProject .sqlproj .dacpac ファイルを検索することがわかります。
正確なエラー:
[SqlPublishTask] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(1233, 5): ファイル "C:\Program Files\TeamCity \buildAgent\work\abf8bc05a2cfe7f\*MyProject*\bin\Debug\*MyProject*.sqlproj.dacpac" が存在しません。
buildAgent/work/ identificator /*MySolution*/ MyProject /bin/Debug フォルダーに、正しい .sql および .dacpac ファイルが生成されます (中間に .sqlproj はありません) 。
私の TeamCity ビルドステップは次のように構成されています。
- ランナーの種類: MSbuild
- ビルド ファイル パス: MyProject /*MyProject*.sqlproj
- MSBuild バージョン: 4.5
- MsBuild ツールバージョン: 4.0
- 実行プラットフォーム: 4.0
- ターゲット: 公開
- コマンド ライン パラメータ:
/p:SqlPublishProfilePath="Debug.publish.xml" /p:Configuration=Debug
コマンドラインからこれを実行すると、エラーは発生しません。
正しいファイルを検索するように TeamCity を構成する方法、または TeamCity が検索しているファイルを生成するようにプロジェクトを構成する方法についてのアイデア。
または、MSBuild の Publish タスクを使用する計画は無駄であり、sqlpackage.exe
代わりに使用する必要がありますか?
アップデート
これを理解しようとしてほぼ3日を費やした後、私はあきらめてsqlpackage.exe
、魅力のように機能するものを使用しました. しかし、私はまだ答えに興味があります.ビルドサーバーで実行可能ファイルにパスを渡すことは、物事を達成するための少し粗雑な方法のようです.