gpt4 book ai didi

azure - 如何在 Azure 上部署 64 位版本的 DLL,但在开发盒上使用 32 位版本

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

我和我的业务合作伙伴正在共同开发一个部署在 Azure 上的 Web 应用。我的盒子基于64位Windows 7,但我的合作伙伴使用32位Windows 7

在 VS2010 IDE 中,当我从 System32 目录(我的机器上的 64 位)添加对“ieframe.dll”的引用时,IDE 实际上带来了 SysWoW64(32 位) ) DLL 的版本。

两个开发盒都可以与 32 位 WOW 版本的“ieframe.dll”完美配合,但是当我们部署到 Azure 时,我们会遇到 EntryPointNotFoundException对“ieframe.dll”的 Interop/DllImport 调用。所以看来 Azure 希望拥有 64 位版本。

我们如何将 64 位版本部署到 Azure,同时在开发盒上继续使用 32 位版本?

编辑:显然,我们可以通过将 64 位“ieframe.dll”复制到某个位置,然后手动将其放置在“bin”目录中来手动执行此操作,但是在 Azure 中是否有更好的最佳实践方法来执行此操作?

编辑 #2:对于此场景,我们最终将 Azure 的节点从 osFamily="1"更改为 osFamily="2"。执行此操作将安装包含 IE8(而不是 Windows Server 2008 SP1 中的 IE7)的 Windows Server 2008 R2。无需混淆 32 位版本与 64 位版本或手动将 DLL 复制到服务器。

最佳答案

如果您始终从 64 位计算机部署到 Azure,则可以更改项目文件,以便在生成时根据执行生成的计算机的处理器类型将正确的 DLL 复制到 bin 文件夹。这对我们来说非常有用,因为我们从 64 位构建服务器部署到 Azure。如果这听起来是一个不错的解决方案,请按照下列步骤操作:

1 - 创建一个外部 lib 文件夹,其中包含两个名为 32 和 64 的子文件夹。
2 - 将 32 位版本的 DLL 放在 32 文件夹中,将 64 位版本放在 64 文件夹中。
3 - 在文本编辑器中打开有问题的项目文件。
4 - 将以下节点添加到项目文件中包含“引用包含”项的 ItemGroup 之后。这将根据系统提供的环境变量复制正确的 DLL:

<ItemGroup>
<DllToCopy Condition=" '$(PROCESSOR_ARCHITECTURE)' == 'x86' And '$(PROCESSOR_ARCHITEW6432)' == '' " Include="..\ext-lib\32\mydll.dll" />
<DllToCopy Condition=" '$(PROCESSOR_ARCHITECTURE)' == 'AMD64' Or '$(PROCESSOR_ARCHITEW6432)' == 'AMD64' " Include="..\ext-lib\64\mydll.dll" />
</ItemGroup>

5 - 最后,更改项目的 BeforeBuild 目标,如下所示:

<Target Name="BeforeBuild">
<Copy SourceFiles="@(DllToCopy)" DestinationFolder="$(OutputPath)" />
</Target>

另一个选择是根据构建配置将正确的 DLL 复制到 bin 文件夹(不太理想)。例如,如果您有一个名为 Production 的构建配置,您将按照上述步骤操作,但步骤 4 将包含以下内容:

<ItemGroup>
<DllToCopy Condition=" '$(Configuration)' != 'Production' " Include="..\ext-lib\32\mydll.dll" />
<DllToCopy Condition=" '$(Configuration)' == 'Production' Include="..\ext-lib\64\mydll.dll" />
</ItemGroup>

另一个(甚至不太理想的)选项是使用 Azure 启动任务将 64 位版本的 DLL 复制到 bin 文件夹。

希望这有帮助。

关于azure - 如何在 Azure 上部署 64 位版本的 DLL,但在开发盒上使用 32 位版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7426231/

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