2009-03-05 59 views
3

如果我们有一些开发人员在64位机器和32位机器上开发某些开发人员,但是我们需要引用非托管程序集,这些程序集需要在x86中才能完成一半的团队另一半是x64?每当有人在64位平台上获取最新版本时,是否还有解决方案,除了手动更新引用?混合.NET开发环境中的非托管x64程序集

回答

1

你想做这个作为你的构建的一部分,对吧?

编写预构建步骤,将引用的DLL从源代码树中的永久位置复制到本地项目。使用$(ConfigurationName)或$(PlatformName)宏来选择哪个版本的非托管DLL实际被复制。您只需将您的DLL保存在单独的文件夹中,并使用与配置名称或平台名称匹配的名称。

+0

实际上,这是在设计时。我们有适用于构建过程的解决方案,但是一些开发人员可以在Debug |中进行编译64。 – PeteK 2009-03-11 16:21:36

1

用x64机器的开发者乐意运行64位版本是很奇怪的。 Visual Studio不支持在x64模式下编辑+继续,这是相当大的损失。解决方法很简单,将Platform Target设置为x86。 Automagically也解决你的非托管DLL问题。

+0

这很奇怪,我会与三只黑羊讨论它,但如果有解决方案,它会更好。我想这是一个很漂亮的案例,但我会继续寻找。 – PeteK 2009-03-11 16:20:50

0

还有一种解决方案需要编辑一些代码。它在从Milan Gardianthis question的回答中被描述。

基本上,它涉及编写自己的程序集引用处理程序,以确定在运行时加载哪个程序集,前提是您可以访问程序集的两个(32位和64位)版本。我刚刚实施了这个解决方案,我的自我,它就像一个魅力。

我的情况是这样的:
我正在开发一个针对Windows 7 64位“Any CPU”的.NET程序。我添加了32位程序集引用,并将Copy Local设置为false。我使用生成后事件将32位和64位程序集复制到输出文件夹,并确保为32位程序集提供与参考中不同的名称。这是因为我想强制我的自定义程序集解析器启动并执行它的事情,这是由于.NET默认程序集解析器无法解析引用。在运行时正确的程序集被加载,并在编译时,我没有得到任何错误。应该指出的是,我没有时间来确认现在是在32位操作系统上工作,但我没有看到它不应该起作用的任何理由。

相关问题