web-dev-qa-db-ja.com

sqlprojの参照アセンブリがサーバーにデプロイされていません

変更バージョンfastJSON を参照として使用するVisual Studio 2013データベースプロジェクトがあります。次のスクリーンショットに示すように、参照プロパティで[DDLの生成]を選択しました。

fastJSON property panel

そして.sqlproj msbuildファイルで:

<Reference Include="fastJSON">
  <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath>
  <GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</Reference>

ただし、bin/debug/Project.sqlにはCREATE Assembly fastJSON . . .の行が含まれていません。アセンブリを手動で追加すると、プロジェクトがデプロイおよび実行されます。 Visual Studioでアセンブリを展開するにはどうすればよいですか?

9
Justin Dearing

私はこれらの設定が何をするかを理解するために少し遊んだ...コメントしたとき、私はそれらを理解せずに私たちの設定が何であるかを述べただけだった。私はデータベースプロジェクトへの移行のプロジェクトリーダーではないので、このような細部についてはよく知りませんでした。

Model AwareプロパティをTrueに設定する必要があります。

このプロパティは十分に文書化されていませんが、私の理解では、有効にすると、アセンブリ内のオブジェクトがデータベースモデルに公開され、SQLCLRラッパーで使用できるようになります(つまり、CREATE ... EXTERNAL ...)と参照を解決できます。プロジェクトのモデルにこれらのオブジェクトが含まれていない場合、それらが出力でスクリプト化される方法はありません。また、アセンブリ内のオブジェクトへの参照があり、このプロパティがFalseに設定されている場合、プロジェクトのビルドは失敗します。

Generate Sql Scriptプロパティについては、ドキュメントと同様の状態です。これは、アセンブリで公開されているメンバーが自動的にスクリプトで出力されるかどうかを制御します。 SQLCLRラッパーの名前を変更し、必要なオブジェクトのみを選択的に含めるという柔軟性を維持するために、この機能は無効になっています。これをどのように設定するかは、あなたの裁量次第です。

うまくいけば、これらのプロパティの公開ドキュメントに役立ちます!

10
Jon Seigel