如果我们有一些开发人员在64位机器和32位机器上开发某些开发人员,但是我们需要引用非托管程序集,这些程序集需要在x86中才能完成一半的团队另一半是x64?每当有人在64位平台上获取最新版本时,是否还有解决方案,除了手动更新引用?混合.NET开发环境中的非托管x64程序集
回答
你想做这个作为你的构建的一部分,对吧?
编写预构建步骤,将引用的DLL从源代码树中的永久位置复制到本地项目。使用$(ConfigurationName)或$(PlatformName)宏来选择哪个版本的非托管DLL实际被复制。您只需将您的DLL保存在单独的文件夹中,并使用与配置名称或平台名称匹配的名称。
用x64机器的开发者乐意运行64位版本是很奇怪的。 Visual Studio不支持在x64模式下编辑+继续,这是相当大的损失。解决方法很简单,将Platform Target设置为x86。 Automagically也解决你的非托管DLL问题。
这很奇怪,我会与三只黑羊讨论它,但如果有解决方案,它会更好。我想这是一个很漂亮的案例,但我会继续寻找。 – PeteK 2009-03-11 16:20:50
还有一种解决方案需要编辑一些代码。它在从Milan Gardian到this question的回答中被描述。
基本上,它涉及编写自己的程序集引用处理程序,以确定在运行时加载哪个程序集,前提是您可以访问程序集的两个(32位和64位)版本。我刚刚实施了这个解决方案,我的自我,它就像一个魅力。
我的情况是这样的:
我正在开发一个针对Windows 7 64位“Any CPU”的.NET程序。我添加了32位程序集引用,并将Copy Local设置为false。我使用生成后事件将32位和64位程序集复制到输出文件夹,并确保为32位程序集提供与参考中不同的名称。这是因为我想强制我的自定义程序集解析器启动并执行它的事情,这是由于.NET默认程序集解析器无法解析引用。在运行时正确的程序集被加载,并在编译时,我没有得到任何错误。应该指出的是,我没有时间来确认现在是在32位操作系统上工作,但我没有看到它不应该起作用的任何理由。
- 1. 混合管理/非托管程序集加载顺序
- 2. WinDbg - 调试混合x64托管/非托管代码
- 3. 检测混合环境中的内存泄漏(托管非托管)
- 4. 混淆vs非托管程序集
- 5. 在混合C++ .NET应用程序中强调托管还是非托管?
- 6. 混合开发环境
- 7. 从非托管代码加载混合模式程序集
- 8. 混合托管/非托管C++?
- 9. 签署引用非托管程序集的托管程序集
- 10. Selenium集成开发环境集成开发环境IDE集成开发环境集成开发环境
- 11. 非托管环境中的.NET泛型(C#)(VB6.0)
- 12. 在非托管环境中休眠
- 13. C++/cli中的观察者模式混合托管/非托管
- 14. DebugBreak的行为在非托管和混合(非托管+托管)应用程序之间有所不同?
- 15. 如何在C++/CLI中混合使用混合类型(托管和非托管)?
- 16. 经典ADO仍然适用于混合托管/非托管应用程序吗?
- 17. 允许托管环境中的托管代码回拨非托管代码
- 18. .NET的开发环境
- 19. 如何将非托管dll和托管程序集合到一个文件中?
- 20. 托管在非节点环境
- 21. 。混合托管和非托管代码的问题
- 22. 在托管环境中使用非托管线程有什么缺点?
- 23. 确定哪个.NET程序集调用非托管代码
- 24. 引用非托管程序集
- 25. “完美”.NET开发环境?
- 26. 如何在混合应用程序中执行异常处理? (托管应用程序使用非托管DLL)
- 27. 在混合托管/非托管C++/CLI进程关闭期间线程关闭
- 28. 混合环境中的NServiceBus
- 29. 混合托管和非托管C++代码?
- 30. 非托管C++ .NET中
实际上,这是在设计时。我们有适用于构建过程的解决方案,但是一些开发人员可以在Debug |中进行编译64。 – PeteK 2009-03-11 16:21:36