gpt4 book ai didi

asp.net - 为什么 ASP.NET 网站在添加本地引用时从 GAC 引用程序集?

转载 作者:行者123 更新时间:2023-12-04 00:36:58 24 4
gpt4 key购买 nike

当您使用 ASP.NET 网站(而不是 Web 应用程序模型)并从本地文件夹添加对程序集的引用时,Visual Studio 似乎理解此本地程序集也在 GAC 中,因此不会将此程序集复制到 bin 文件夹(与非 GAC 程序集一样),但只需在 web.config 文件中添加新记录。

为什么会有这样的行为?是否可以强制复制到 bin 文件夹(我需要这个,因为 .dll 不在目标环境中)?我可以将程序集作为文件添加到 bin 文件夹中,它会起作用,但在这种情况下,bin 文件夹的内容将在源代码管理中,这并不好。

最佳答案

您可以在引用上将 Copy Local 属性设置为 True。这应该将它添加到 bin 文件夹 - 在 Web 应用程序项目上。

但是对于网站项目,当您添加引用时,它所做的只是在引用程序集的 web.config 中添加一行。它将首先在 bin 文件夹中查找此文件,如果未找到,则在 GAC 中查找。

您有两种选择:要求将程序集安装在目标机器上的 GAC 中(在这种情况下,XCOPY 部署是不可能的)或将所有必需的程序集包含在 bin 文件夹中,方法是将它们复制或编写后构建这样做的脚本。您可以使用命令提示符找到 .dll 并转到 c:\windows\assembly\GAC,找到您感兴趣的程序集,cd 进入该目录,然后 cd 进入具有您感兴趣的版本的目录。这将为您提供在构建后脚本中使用的路径。例如,对于 GAC 中的辅助功能程序集,您最终会得到以下路径:
c:\Windows\assembly\GAC\Accessibility\1.0.5000.0__b03f5f7f11d50a3a\Accessibility.dll

你说在源代码管理中包含 bin 文件夹内容不好。对于您构建的二进制文件,这通常被认为是正确的,但在您的情况下,您的二进制 Assets 并未作为项目的一部分进行编译。从哲学上讲,这些相当于图像:未编译为项目一部分的二进制 Assets 。我认为它们与您的项目所依赖的任何其他二进制文件一样属于源代码控制。但这是个人选择。

关于asp.net - 为什么 ASP.NET 网站在添加本地引用时从 GAC 引用程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com