Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
.NET依赖项复制导致生成大_.net_Visual Studio_Dll - Fatal编程技术网

.NET依赖项复制导致生成大

.NET依赖项复制导致生成大,.net,visual-studio,dll,.net,Visual Studio,Dll,我正在部署一个大型dll,这导致最终的构建非常庞大 所以我有ProjectA,它引用ProjectB,它引用第三方DLL。 此第三方DLL现在位于两个project bin文件夹中,即使它仅由ProjectB直接引用。问题是,这个第三方dll是巨大的,并导致最终构建是巨大的,因为它被复制到如此多的bin文件夹。我只是在寻找这种情况下的最佳实践。由于您的第三方DLL很大,并且在多个应用程序之间共享,因此解决方案可能是将共享DLL放入,而不是在每个应用程序中部署 这仅在DLL具有强名称时才有效,但许

我正在部署一个大型dll,这导致最终的构建非常庞大

所以我有ProjectA,它引用ProjectB,它引用第三方DLL。
此第三方DLL现在位于两个project bin文件夹中,即使它仅由ProjectB直接引用。问题是,这个第三方dll是巨大的,并导致最终构建是巨大的,因为它被复制到如此多的bin文件夹。我只是在寻找这种情况下的最佳实践。

由于您的第三方DLL很大,并且在多个应用程序之间共享,因此解决方案可能是将共享DLL放入,而不是在每个应用程序中部署

这仅在DLL具有强名称时才有效,但许多公司对其程序集使用强名称,因此您可以尝试一下


其思想是,您可以将此1 DLL拖放到GAC中,然后您可以继续在没有此文件的情况下部署应用程序的其余部分。只要您将DLL放在正确的GAC(框架版本和位)中,并根据依赖项编译应用程序,.NET framework就会在GAC中找到它,因此无需在每次部署中都包含它。

据我所知,主要原因是您已将此引用设置为“复制本地”,首先导致项目之间的重复。如果您正常地为每个项目添加引用,并且只为web项目将其设置为“复制本地”,那么副本的数量将大大减少。

请澄清您的问题。这是web项目还是windows项目?我真的不理解这个问题,因为通常在部署应用程序时,除了DLL依赖项之外,还有一个可执行文件。换句话说,一个“项目”将编译成一个程序集,然后进行部署。“项目”本身不部署,只有程序集部署。这是几个web项目,它们使用几个使用此大型dll的库项目。我不是在谈论部署,而是在开发人员机器和构建机器上,构建占用了很多空间。因此,我们可能有一个数据访问类,该类引用了这个用于DB连接的大型dll。然后,在web项目中引用数据访问类。现在,大型dll被复制到数据访问类和web项目bin文件夹。由于ProjectA引用ProjectB,这意味着您已将ProjectB复制到ProjectA的bin文件夹,这意味着ProjectB需要大型dll才能正确加载。。。因此,它必须同时存在于两者之中。A不引用C,但它引用B,B引用C,否则A将无法加载B程序集。@ErikFunkenbusch我是这么想的:(…本希望有什么灵丹妙药,但事实似乎并非如此。在构建项目a后,您可能能够对项目B执行清理,但这意味着每次都必须完全重建B。他说他正在部署bin,这将假定他不想使用GAC做任何事。@Erikbunkenbusch-好的,你能想一想吗在项目之间共享大型DLL的另一种方法是什么?没错,我们以前在应用服务器上安装了oracle客户端(DLL是oracle运行库),但我们不能再这样做了,所以我们必须进行bin部署。不幸的是,我们有一些糟糕的设计,因此我们有大量的项目直接引用oracle,然后又有大量的项目引用这些项目。我正在试图找到一种方法,以减少复制到的bin数量,而无需中断代码,也无需执行其他操作主要的重写。不确定这是否可能,我想我会在这里问一下,看看我是否遗漏了什么。