Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 不生成dll的VS2013数据库项目_Sql Server_Database_Visual Studio 2013_Sqlclr_Sql Server Data Tools - Fatal编程技术网

Sql server 不生成dll的VS2013数据库项目

Sql server 不生成dll的VS2013数据库项目,sql-server,database,visual-studio-2013,sqlclr,sql-server-data-tools,Sql Server,Database,Visual Studio 2013,Sqlclr,Sql Server Data Tools,如何在VS2013数据库项目中禁用生成dll 我根本不使用SQLCLR。假设目标只是不在输出文件夹(例如,\bin\{configuration})中包含DLL以及.SQL和.DACPAC文件,防止这种情况的最干净的方法似乎是在项目的.sqlproj文件的主元素下添加以下XML元素: <CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory> false DLL在技术上仍然会生成

如何在VS2013数据库项目中禁用生成dll


我根本不使用SQLCLR。

假设目标只是不在输出文件夹(例如,\bin\{configuration})中包含DLL以及.SQL和.DACPAC文件,防止这种情况的最干净的方法似乎是在项目的.sqlproj文件的主
元素下添加以下XML元素:

<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>
false
DLL在技术上仍然会生成,但会在\obj\{configuration}文件夹中生成

编辑:
如果还希望防止将PDB文件复制到输出文件夹中,请在如上所述的相同位置使用以下元素:

<CopyOutputSymbolsToOutputDirectory>false</CopyOutputSymbolsToOutputDirectory>
false

SSDT必须生成一个dll作为MSBuild键输出,以使其他项目类型能够引用SSDT。不幸的是,VS中的许多项目系统都假设它的引用生成了一个dll,当它们没有发生不幸的事情时

您只需添加

del $(TargetPath)
到数据库项目中的生成后事件


这样做会禁用构建,这意味着不会创建Dacpac文件-这意味着在发布时会使用过时的项目版本,我认为这不是需要的here@KevinCunnane:很公平,谢谢你至少给出了否决票的理由(假设是你)而不是让它看起来随机。有一种方法可以做到这一点,而不会干扰其他任何事情。我只需要测试一下。我会尽快用正确的方法更新我的答案。顺便说一句,我也质疑这样做的原因,但是,这是可能的,也可能有合法的理由不想要它。@Kevincunne:答案已经更新,这样生成仍然发生,.dacpac文件已经创建。谢谢,我已经删除了否决票,因为你已经用一个有效的答案更新了它。我对上/下投票有点陌生,我并不是故意让它看起来很苛刻,只是最初的答案可能在部署时造成了真正的问题。dll没有复制到bin。但是,pdb仍然被复制到BIN。不可能禁用此功能,但我很感兴趣-为什么要禁用DLL生成?在生成过程中,会生成.dacpac和.dll文件,但除非使用SQLCLR,否则可以忽略.dll。我想不出这样做对性能有什么好处,生成的文件只有4KB。我想补充一点,我想忽略dll以简化自动部署的创建。我们有一个包含10个dbs的项目和两个单独的SQLCLR项目。所以,我不能在设置部署工件时忽略.dll,因为需要它们中的一些。但我试图不明确地定义它们。如果我没有构建数据库.dll,那么我可以将其他任何数据库复制到部署中。唉,数据库之间有很多引用,因此我必须创建.DLL并显式定义我实际需要的任何引用。由于DLL没有复制到输出中,您的答案与接受的答案有什么关系。@约翰了解虽然接受的答案似乎满足OP的要求,但问题明确指出“不生成dll”。即使是公认的答案也会生成dll,Patrick只是简单地解释了为什么需要dll。@Patrick Sirr您的评论可能会解决我的问题。我正在添加数据库引用,但没有生成dll,这会导致未解析的引用。我需要做什么?