web-dev-qa-db-ja.com

ホストされたVS2017エージェントビルドmaster.dacpacは存在しません

VS2017 Professionalで作成したソリューションには、マスターデータベースを参照するSQL Serverデータベースプロジェクトが含まれています。 Hosted VS2017エージェントを使用してVisual Studio Team Servicesでソリューションをビルドすると、次のエラーが表示されます。

2017-07-14T12:44:17.8387743Z ## [エラー] C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools Schema.SqlTask​​s.targets(559,5):エラーSQL72027:ファイル "C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\110\SqlSchemas\master.dacpac "は存在しません。 2017-07-14T12:44:17.8397816ZC:\ Program Files(x86)\ Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTask​​s.targets( 559,5):ビルドエラーSQL72027:ファイル "C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\110\SqlSchemas\master.dacpac"存在しない。 [d:\ a\3\s\Main\ItAsset.Database\ItAsset.Database.sqlproj]

これを修正してVSTSでビルドするソリューションを取得するにはどうすればよいですか?

22
mheptinstall

複数の開発者がいる状況で、私はこれを少し理解しました。 VS2017 SSDTプロジェクトでは、コードをチェックインした開発者が、元のVisual Studioのインストールを別のパスまたはVisual Studioの別のインスタンスで行っていたようです。たとえば、開発者AがC:\のデフォルトにインストールし、開発者BがVS2017をE:\ドライブにインストールした場合、マスターへの参照を作成したユーザーは動作しますが、他のユーザーはdacpacファイルを見つけられません。

.sqlprojファイルを見ると、マスターデータベースへのこの参照を見つけることができます。

 <ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">
  <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac</HintPath>

注:<HintPath>は正しいが、Include="はハードコードされたパスです。ヒントパスは通常どおりに追跡されないようです。問題を解決するには、HintPath要素の内容をInclude属性にコピーしてみてください。 HintPathはそのままにしておきます。

<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">
45
Larry Smith

これは、Visual Studio 2017のSSDTのバグです。

回避策は、プロジェクトファイルを手動で編集して、フルパスを$(DacPacRootPath)変数に置き換えます。または、Visual Studio 2015にSSDTを使用できます。

https://feedback.Azure.com/forums/908035-sql-server/suggestions/32897047-visual-studio-2017-ssdt-adds-hardcoded-master-dacp#comments

8/12/2019更新-このバグはVisual Studio 2019およびVisual Studio 2017バージョン15.9.13で修正されました。ここを参照してください- https://developercommunity.visualstudio.com/content/problem/124214/visual-studio-2017-ssdt-adds-hardcoded-mmsdb-andor.html

16
Jason Kohlhoff

Hosted VS2017エージェントには存在しない絶対パスを使用します。 (プロフェッショナル vs エンタープライズ)。プロジェクトファイルを確認できます(ノードパッドでsqlprojファイルを開きます)

Master.dacpacをプロジェクトフォルダーにコピーしてプロジェクトに含め、このファイルへの参照を追加できます。

3