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 o assembly manualmente funciona e meu projeto será implantado e executado. O que faço para que o Visual Studio implante meu assembly?
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; Não sou o líder do projeto de nossa migração para projetos de banco de dados, então não estava familiarizado com as minúcias dessas coisas.
A
Model Aware
propriedade precisa ser definida comoTrue
.Essa propriedade está mal documentada, mas pelo que entendi, habilitá-la 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 há como eles serem incluídos no script na saída. Além disso, se houver uma referência a um objeto no assembly e essa propriedade for definida comoFalse
, o projeto falhará ao ser compilado.A
Generate Sql Script
propriedade que mencionei está em um estado semelhante de documentação. Isso controla se os membros visíveis publicamente na montagem são automaticamente inseridos no script na saída. Desativamos para manter a flexibilidade de renomear os wrappers SQLCLR e incluir seletivamente apenas os objetos de que precisamos. A maneira como você define isso fica a seu critério.Espero que isso ajude a documentação pública dessas propriedades!