Eu tenho um projeto de banco de dados do Visual Studio 2013 que usa uma versão modificada do fastJSON como referência. Selecionei Gerar DDL nas propriedades de referência, conforme mostrado nesta captura de tela:
E no arquivo .sqlproj msbuild:
<Reference Include="fastJSON">
<HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath>
<GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</Reference>
No entanto, bin / debug / Project.sql não contém uma linha para CREATE ASSEMBLY fastJSON . . .
. Adicionar a montagem manualmente funciona e meu projeto será implantado e executado. O que faço para obter o Visual Studio para implantar meu assembly?
sql-server
sql-clr
visual-studio-2013
database-projects
Justin Dearing
fonte
fonte
False
, eModel Aware
está definido comoTrue
, e obtemos umCREATE ASSEMBLY
na saída. Talvez tente essas configurações e veja o que acontece?Respostas:
Eu brinquei um pouco para descobrir o que essas configurações fazem ... quando comentei, apenas mencionei quais são nossas configurações sem entendê-las; Eu não sou o líder do projeto para nossa migração para projetos de banco de dados, por isso não estava familiarizado com as minúcias desse material.
A
Model Aware
propriedade precisa ser definida comoTrue
.Essa propriedade está mal documentada, mas, pelo que entendi, a habilitação exporá os objetos dentro do assembly ao modelo de banco de dados, para que possam ser usados nos wrappers SQLCLR (ou seja,
CREATE ... EXTERNAL ...
) e as referências possam ser resolvidas. Se o projeto não incluir esses objetos no modelo, não haverá como eles serem roteirizados na saída. Além disso, se houver uma referência a um objeto na montagem e essa propriedade estiver configurada comoFalse
, o projeto falhará ao criar.A
Generate Sql Script
propriedade que mencionei está em um estado semelhante de documentação. Isso controla se os membros publicamente visíveis na montagem são automaticamente roteirizados na saída. Nós o desativamos para manter a flexibilidade de renomear os wrappers SQLCLR e incluir seletivamente apenas os objetos de que precisamos. O modo como você define isso fica a seu critério.Espero que ajude a documentação pública dessas propriedades!
fonte
Model Aware
e outras propriedades podem ser definidas clicando com o botão direito do mouse na DLL referenciada e selecionandoProperties
.