如何解决更新引用的DLL后,ASP.Net网站项目无法生成
因此,我有一个ASP.NET VB网站,该网站引用了其他几个项目(它们的DLLS只是放在网站的bin文件夹中)。我需要在其中一个项目中更新一小段代码,该代码已经完成并且可以正常运行。但是,当我将新的DLL复制到网站的bin文件夹时,它无法构建,并且所有Imports语句都说“ BC40056:在Imports xxx 中指定的命名空间或类型不包含任何公共成员。或无法找到”,这会导致大量错误,例如“未定义”。在网站项目的属性中没有引用更新的DLL,但是如果我把旧版本放回去,一切都很好。
该项目是从服务器复制的,而vbproj文件包含对其他DLL的引用,但HintPath是映射驱动器和.. \ .. \ .. \\的混合。我已经对它们进行了更新,以使它们成为完整的服务器位置路径,但这没有什么区别。我尝试将项目添加到与网站相同的解决方案中,并添加了对该项目的引用,但这也没有影响。
我已经做了很多谷歌搜索,但是还没有找到解决方案。任何帮助将非常欢迎!
解决方法
几件事 您不想只将.dll放在bin文件夹中。一个很大的原因是,当您执行“干净”项目时,bin文件夹将被删除。因此,无论何时执行清洁项目,bin文件夹中的内容都会被清除。如果出现某种问题,开发人员通常会做一个干净的项目。
我会将这些文件放在项目中的某个文件夹中。 (创建一个文件夹,或者仅创建一个或两个.dll,然后将其放置在项目的根目录中)。在编译时,.dll文件将被复制到bin文件夹中。而且,如果您使用Web部署,则可以选择将.dll全部合并为一个.dll。因此,再一次,您会发现将.dll放入bin文件夹几乎没有任何意义,因为在构建过程中将不需要它们。并且,如前所述,生成的bin文件夹可以并且将作为“常规”开发流程将被重新创建(清空)。我看到了很多项目,开发人员确实将.dll放置在bin文件夹中(因为他们不知道将.dll放置在何处,这似乎是应用程序工作的唯一位置。但是,在Web构建+部署到生产服务器上,这些.dll可以被保留-不能将其复制到最终的“部署”构建中(我的基本意思是不要这样做!)。
您还可以考虑仅在根目录中创建一个名为“ packages”的文件夹。这是所有nuget包的放置位置。因此,这里的想法是为那些.dll提供一些文件夹。
另一个大问题?好吧,只是在某个位置放一些.dll并不能为开发人员提供编写代码时这些.dll的所有方法和属性(我们假设它们是托管代码-不能赢得x32 .dll)。
因此,在不添加对该程序集的引用的情况下,我看不到项目将如何正确编译,语法检查以及程序集的常规用法在开发过程中如何工作(因此感到非常困惑)您没有对那些.dll的引用-通常来说这是行不通的。)
现在要使用程序集吗?是的,您要添加.dll作为对项目的引用。
因此,在引用中,将.dll添加为引用。
然后在属性表中进行引用?确保您已将“本地复制”设置为true。 例如:
因此,以上是GhostScript.net参考。 (一个用于操作pdf的开源库)。
请注意.dll位置的长路径名。但是,最重要的是复制本地设置= true。这意味着在编译和构建(如前所述可以清除bin文件夹)期间,.dll将输出到bin文件夹中的最终版本。
因此,在没有实际引用.dll的情况下,我看不到如何编译任何内容。这是相当假设的,并且是给定的-否则我看不出您的项目在任何情况下都无法编译。
因此,请参考.dll,这应允许使用类和对象,并使代码可以编译。并确保复制local = true,因为在编译时,该过程将复制+ .dll并将其放置在最终输出(bin)文件夹中。
,因此,事实证明,我尝试引用的DLL项目的目标CPU设置为x64。将此更改为“ AnyCPU”,然后允许我引用它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。