gpt4 book ai didi

c# - 用另一个实现替换 .NET 程序集

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:30 25 4
gpt4 key购买 nike

我有一对使用两个不同后端实现相同功能的程序集:

Engine.OpenGL.dll
Engine.DirectX11.dll

是否可以创建单个 Visual Studio 项目,无需重新编译即可使用这些后端中的任何一个?两个引擎 DLL 公开的命名空间/类/方法是相同的(或者至少我在项目中使用的是相同的)。

我尝试针对其中一个引擎程序集构建我的项目,然后将其替换为另一个(通过覆盖 dll 文件)。这会导致以下错误:

The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我是否必须创建 2 个单独的项目,它们之间的唯一区别是它们引用的是哪个引擎 DLL?

最佳答案

您不能创建一个名为“GraphicsEngineContract”之类的项目,并使用它来定义表示两个不同引擎项目中的各种类的接口(interface)。然后在您的引擎项目中,您可以确保所有匹配的类都实现相同的接口(interface)(或者来自 Contract 项目的抽象类,如果其中有的话)。

然后您将重构主项目以仅引用契约(Contract)项目中的父类(super class)型(抽象类和接口(interface))。最后,您的初始化过程将通过检测本地系统上可用的内容并根据发现的内容分配具体实例来启动。

那么就不是非此即彼的情况了。您可以在本地复制这两个引用并根据最终用户计算机上安装的内容为它们创建对象。

如果您采用这种方法,您可能最终会得到四个项目。主工程、合约工程、directx工程、opengl工程。

关于c# - 用另一个实现替换 .NET 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27973330/

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