MsBuild:将项目引用更改为引用

5
在我们的环境中,有两个内部框架和一个独立的网站。在开发过程中,对内部框架的引用往往被设置为项目引用。然而,一旦我们转移到发布阶段,由于它们被用于每个服务器上的多个网站实例,内部框架将被安装到GAC中。所有的ProjectReferences都会手动更改为References,网站程序集和网站将被重新编译和部署。
我试图自动化这个过程。如何处理这些问题?我已经开始学习MsBuild来完成这个任务,但是完全感到困惑。请给出任何指针和/或建议,以便我可以继续前进。
2个回答

3
据我所知,只要在建立引用时引用的项目是强类型的,就无需更改使用项目引用到文件引用,仅仅因为程序集已经注册在GAC中 - 引用应该仍然有效。 澄清: GAC引用和文件引用之间没有根本区别 - 如果您引用了一个强命名程序集,并且该程序集被放置在GAC中,则最终应用程序将从GAC加载该程序集。
请参阅此链接以获取有关运行时如何定位引用程序集的更多信息:

提供信息 - 我认为建议您不要引用物理上在GAC中的程序集,而是在将强名称程序集放入GAC之前引用该程序集(不要与是否应在最终用户计算机上安装程序集到GAC混淆)


实际上,我不想要一个文件引用 - 我想要一个 GAC 引用。这是由于我们的安装项目的工作方式 - 它只会将项目安装到 GAC 中。 - David Williams
@David - 我不明白你所说的“GAC引用”是什么意思,我猜你指的是一个强名称程序集的引用,你打算将其安装到GAC中?如果是这种情况,那么“GAC引用”和文件引用之间没有根本区别。 - Justin

1

如果您保留项目引用,MSBUILD 将会将所有项目引用作为 DLL 复制到目标网站的 bin 目录中,即使您已经将这些 DLL 安装到 GAC 中,我认为这就是您想在发布级别更改此设置的原因--以便节省空间。

我还假设您打算仅在 Release 分支上执行此操作,而不是在源代码控制的开发分支上执行。因为如果您在所有源代码控制的分支上都这样做,那么手动操作实际上是一次性更改的最佳和最快捷的方式。

要在 MSBUILD 中执行此操作,您需要创建一个自定义任务来修改项目文件。项目文件是一个 XML 文件,因此您可以在 MSBUILD 中使用 XPath 作为自定义任务。在项目文件中,您将找到 "" 标签,该标签指向您引用的项目。您需要将这些标签更改为 "" 标签。使用项目中现有的示例来查看它应该如何显示

很抱歉我没有此方面的示例代码--以这种方式执行将是一个有点艰巨的任务,因为有许多事情需要考虑,可能最终无法实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接