C# 当程序集将注册到GAC时,如何在项目中引用程序集

C# 当程序集将注册到GAC时,如何在项目中引用程序集,c#,vb.net,visual-studio-2010,.net-assembly,C#,Vb.net,Visual Studio 2010,.net Assembly,我已经构建了一个.NET程序集,并已将其注册到GAC(我在其中找到它) “C:\Windows\Microsoft.NET\assembly\GAC_MSIL”与MSI安装程序一起安装后 现在,在我的开发计算机上,当我构建一个使用此程序集的项目时,我应该使用什么引用。我知道如果程序集已注册,那么它将优先于我的开发机器,因此它未注册。我使用到Assemblys项目的BIN文件夹的简单路径 但我的问题是:当我的主项目(引用此.dll)部署后,当然,我使用的路径不再有效时,这会导致问题甚至减慢速度吗

我已经构建了一个.NET程序集,并已将其注册到GAC(我在其中找到它)
“C:\Windows\Microsoft.NET\assembly\GAC_MSIL”
与MSI安装程序一起安装后

现在,在我的开发计算机上,当我构建一个使用此程序集的项目时,我应该使用什么引用。我知道如果程序集已注册,那么它将优先于我的开发机器,因此它未注册。我使用到Assemblys项目的BIN文件夹的简单路径

但我的问题是:当我的主项目(引用此
.dll
)部署后,当然,我使用的路径不再有效时,这会导致问题甚至减慢速度吗


我知道GAC中仍然可以找到程序集,但我很想知道这是否会导致问题。

无论您想要什么-这取决于您是否要调试程序集。如果不需要调试程序集,则可以从GAC加载它(毕竟,在加载程序集时,首先搜索的位置是GAC)

在国际海事组织,这不应该是一个问题,也不应该导致任何性能问题。装配位置的确定是一个IMO不太昂贵的过程,值得考虑

在使用第三方库开发软件时,您使用的组合实际上通常是这样的,例如,Microsoft Patterns and Practices库安装在开发机器上的GAC中,并从GAC中引用和加载,但是在实时环境中,Lib程序集是在applicationbin目录中交付的。在我的工作中,这是开发和部署MVC应用程序的首选方法,因为这大大简化了部署过程。
您可以查看这个和这个。

无论您想要什么-这取决于您是否要调试程序集。如果不需要调试程序集,则可以从GAC加载它(毕竟,在加载程序集时,首先搜索的位置是GAC)

在国际海事组织,这不应该是一个问题,也不应该导致任何性能问题。装配位置的确定是一个IMO不太昂贵的过程,值得考虑

在使用第三方库开发软件时,您使用的组合实际上通常是这样的,例如,Microsoft Patterns and Practices库安装在开发机器上的GAC中,并从GAC中引用和加载,但是在实时环境中,Lib程序集是在applicationbin目录中交付的。在我的工作中,这是开发和部署MVC应用程序的首选方法,因为这大大简化了部署过程。 您可以看看这个和这个。

GAC是一个部署细节。对于像Microsoft这样的公司来说,这很好,这样他们就可以可靠地部署.NET Framework程序集的安全和维护更新,并确保文件夹中没有他们永远无法找到和更新的程序集的散乱副本

在dev机器上自己使用GAC通常会导致流泪。对源代码进行更新并完全忘记更改[AssemblyVersion]或重新注册更新的程序集太容易了。这会导致您的程序加载没有更改的陈旧DLL,您将浪费一个小时的时间试图找出更改似乎不起作用的原因

项目的引用程序集不应是GAC中的程序集,而应始终是保存在某处的副本。通过构建项目生成(非常常见的情况)或签入到源代码管理。与.NET引用程序集一样,其副本位于c:\program files\reference Assembly中

即使在用户的机器上,使用GAC也应该三思。DLL地狱始终是程序员应该担心的问题。如果有两个程序在GAC中都使用一个DLL,那么很容易为DLL部署错误修复程序,修复一个程序中的问题,但对另一个程序造成严重破坏。当您使用本地部署时,将DLL的副本与EXE放在同一目录中,这是一个您没有遇到的问题

也许你和微软有着同样的更新顾虑,GAC确实有助于可靠地找到DLL。然而,这并不常见。本地部署几乎总是您的首选。

GAC是一个部署细节。对于像Microsoft这样的公司来说,这很好,这样他们就可以可靠地部署.NET Framework程序集的安全和维护更新,并确保文件夹中没有他们永远无法找到和更新的程序集的散乱副本

在dev机器上自己使用GAC通常会导致流泪。对源代码进行更新并完全忘记更改[AssemblyVersion]或重新注册更新的程序集太容易了。这会导致您的程序加载没有更改的陈旧DLL,您将浪费一个小时的时间试图找出更改似乎不起作用的原因

项目的引用程序集不应是GAC中的程序集,而应始终是保存在某处的副本。通过构建项目生成(非常常见的情况)或签入到源代码管理。与.NET引用程序集一样,其副本位于c:\program files\reference Assembly中

即使在用户的机器上,使用GAC也应该三思。DLL地狱始终是程序员应该担心的问题。如果有两个程序在GAC中都使用一个DLL,那么很容易为DLL部署错误修复程序,修复一个程序中的问题,但对另一个程序造成严重破坏。当您使用本地部署时,将DLL的副本与EXE放在同一目录中,这是一个您没有遇到的问题

也许你