2011-11-18 41 views
0

我想创建一个MVC3网站。我将现有的dll打包为安装在GAC中的.net MSI。在MVC3中引用这些可更新的dll的最佳方式是什么?他们将始终安装到GAC中,他们的版本号会相应更新。我不想在我的MVC3项目中手动引用它们,因为每次重新安装时,引用都会中断,我必须更新我的依赖dll引用。MVC3引用可更新的依赖关系

任何输入,将不胜感激。我已经寻找解决方案,但没有看起来很直接。

感谢

+0

您似乎并不了解GAC的用途。这实际上主要是为了防止/避免你想要做的事情。 –

+0

你为什么要更新你的开发环境,每增加一个依赖模块?无缝工作有什么问题? – River

+0

GAC旨在通过包含版本来避免旧的“DLL-Hell” - 您可以在其中拥有多个版本的相同程序集;您的项目只能与其打算使用的项目一起使用。如果您只是安装程序集的新版本而不重新编译使用该程序集的程序,程序将继续使用旧版本,因为这就是它的用意。新的版本也会*在GAC中......但如果你没有任何针对该版本编译的程序,它将不会被使用。如果GAC不是正确的地方,则为 –

回答

0

你还没有找到一个解决方案,因为没有一个。为了将程序集安装到GAC中,它必须具有强名称。每个使用GAC组件的应用程序都绑定到给定的版本和强名称(无论您是在编译时静态引用程序集还是使用反射来加载它)。如果您在GAC客户端中修改它不再有效,应该相应地进行更新。因此,如果您打算经常修改程序集的版本,那么GAC可能不适合您。您仍然可以对GAC中的程序集进行更改,而无需修改其版本,但必须确保这些更改是兼容的,以避免中断客户端。

+0

。那么有什么选择?在理想世界中?我无法改变依赖模块如何更新的现有流程。 – River

+0

我实际上可以用 更新我的web.config文件。这将告诉VS以最新的GAC参考。它应该让网站在GAC中查找更新的dll。不幸的是,如果我要编译我的源代码,它仍然会中断,因为.csprog文件中仍然存在较老的dll引用。你正确的是没有解决方案,没有在源文件更新到accomamdate版本udpate! – River