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


9

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

fastJSONプロパティパネル

そして.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でアセンブリを展開するにはどうすればよいですか?


5
うーん...私たちはに設定されてFalseおり、Model Awareに設定されTrueCREATE ASSEMBLYおり、出力でaを取得します。たぶんそれらの設定を試して何が起こるか見てください
Jon Seigel 14

回答:


10

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

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

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

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

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


このジョンをありがとう!「トークンを解決できません」というエラーが修正されました。
Rolan

「Model Aware」が正確にどこに設定されているのですか?
nh43de 2017年

Model Awareその他のプロパティは、参照先のDLLを右クリックしてを選択することで設定できますProperties
d12
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.