Tengo un proyecto de base de datos de Visual Studio 2013 que toma una versión modificada de fastJSON como referencia. Seleccioné Generar DDL en las propiedades de referencia como se muestra en esta captura de pantalla:
Y en el archivo .sqlproj msbuild:
<Reference Include="fastJSON">
<HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath>
<GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</Reference>
Sin embargo, bin / debug / Project.sql no contiene una línea para CREATE ASSEMBLY fastJSON . . .
. Agregar el ensamblaje funciona manualmente y mi proyecto se implementará y ejecutará. ¿Qué debo hacer para que Visual Studio implemente mi ensamblado?
sql-server
sql-clr
visual-studio-2013
database-projects
Justin Dearing
fuente
fuente
False
, yModel Aware
está configurado paraTrue
, y obtenemos unCREATE ASSEMBLY
en la salida. Tal vez intente esa configuración y vea qué sucede.Respuestas:
Jugué un poco para descubrir qué hacen estas configuraciones ... cuando comenté, solo mencioné cuáles son nuestras configuraciones sin entenderlas; No soy el líder del proyecto para nuestra migración a Proyectos de base de datos, por lo que no estaba familiarizado con las minucias de estas cosas.
La
Model Aware
propiedad debe establecerse enTrue
.Esta propiedad está mal documentada, pero desde mi punto de vista, habilitarla expondrá los objetos dentro del ensamblaje al modelo de base de datos para que puedan usarse en los contenedores SQLCLR (es decir,
CREATE ... EXTERNAL ...
) y las referencias puedan resolverse. Si el proyecto no incluye estos objetos en el modelo, no hay forma de que se escriban en la salida. Además, si hay una referencia a un objeto en el ensamblaje y esta propiedad se establece enFalse
, el proyecto no se generará.La
Generate Sql Script
propiedad que mencioné se encuentra en un estado similar de documentación. Esto controla si los miembros visibles públicamente en el ensamblado se crean automáticamente en la salida. Lo hemos deshabilitado para conservar la flexibilidad de renombrar los envoltorios SQLCLR e incluir selectivamente solo los objetos que necesitamos. La forma en que configura esto depende de su discreción.¡Ojalá eso ayude a la documentación pública de estas propiedades!
fuente
Model Aware
y otras propiedades se pueden establecer haciendo clic derecho en el archivo DLL al que se hace referencia y seleccionandoProperties
.