当项目从一台机器转移到另一台机器时,GAC引用被破坏



我有一个BizTalk项目,它引用了GAC的一个dll。当我将这个项目从一台机器移动到另一台机器时,引用被破坏了,我需要再次添加这些引用。

是否有一种方法来避免这种情况,因为我有超过50个项目有引用GAC,并将被移动到另一台机器。

是的,您可以通过在迁移项目之前在新机器上GAC所有引用的程序集来避免此问题。就像它们在当前机器上一样。这真的没什么问题。

Visual Studio在引用GAC'ed程序集时的行为不同。我不知道确切的规则是什么,但经常,Visual Studio将显示对GAC的引用,即使在GAC之外的程序集被选为引用目标时也是如此。之所以说显示GAC引用,是因为如果检查项目文件,只会列出程序集的字符串名称列表,而不会列出完整路径。Visual Studio首先探测GAC,如果找到匹配项,则使用GAC。

这些都是Visual Studio的行为,与BizTalk没有直接关系。

对于BizTalk项目来说,这不是一个坏的做法——BizTalk将从GAC中提取库(而不是从您的程序集在构建时认为它在的任何地方)。引用本地DLL或解决方案可能会导致非常具有挑战性的场景,其中DLL的本地副本从未被删除,并且在单元测试中工作的行为在BizTalk中不起作用。解决方法很简单:在新机器上装配GAC。

这里有两种可能的情况-您试图引用您自己构建的程序集(如c#实用程序库),或者您引用第三方DLL。

如果是第一个,那么在该c#库的Post Build事件中,在构建后添加一些逻辑到GAC程序集。例如,

call "$(DevEnvDir)..Toolsvsvars32.bat"
gacutil /if "$(TargetPath)"

然后,确保你先构建了那个项目。

否则,如果您引用的是预构建的库,请将类似的逻辑添加到依赖项目的预构建阶段,并将该库作为资源包含在您的解决方案中(在源代码控制中)。

相关内容

最新更新