混合.NET开发环境中的非托管x64程序集

时间:2009-03-05 23:08:48

标签: .net visual-studio x86 64-bit

如果我们有一些开发人员在64位计算机和一些32位计算机上工作,我们该怎么办,但我们需要引用非托管程序集,需要在x86中占用一半的团队而x64需要在另一半上面?除了64位装备上的某人最新获得最新信息之外,还有手动更新引用的解决方案吗?

3 个答案:

答案 0 :(得分:1)

您希望在构建过程中执行此操作,对吗?

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

答案 1 :(得分:1)

使用x64机器的开发人员愿意运行64位版本是相当奇怪的。 Visual Studio在x64模式下不支持Edit + Continue,这是一个很大的损失。解决方法很简单,将Platform Target设置为x86。自动解决您的非托管DLL问题。

答案 2 :(得分:0)

还有另一个解决方案涉及编辑您的代码。在Milan Gardianthis question的回答中对此进行了描述。

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

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