gpt4 book ai didi

reflection - 根据构建目标在编译时加载不同的程序集

转载 作者:行者123 更新时间:2023-12-04 18:54:54 25 4
gpt4 key购买 nike

我想根据构建目标加载四个单独的 C# 程序集之一。这将进入一个带有 .net framework 3.0 的 web 服务。

可能性:

32 位调试:AmtApiWrapper32d.dll

32 位版本:AmtApiWrapper32.dll

64 位调试:AmtApiWrapper64d.dll

64 位版本:AmtApiWrapper64.dll

这些包装器是一个单独的 C++ 项目,它包装了我编写的 C Native DLL。 C/C++ 是我常用的平台,所以如果这是一个小问题,请原谅。

所有包装 DLL 都包含完全相同的函数和相同的原型(prototype)。除了这个之外,它们还用于许多其他目的,所以除非这真的很糟糕,否则设置保持不变。

所以,我想在编译时加载其中一个。我查看了反射、GetDelegateForFunctionPointer 和其他一些东西,它们看起来都很相似,但对于这个简单的任务来说过于复杂。有什么建议么?
谢谢

最佳答案

这绝对是可能的,但你必须涉足构建文件。

你会想要这样的东西:

<ItemGroup Condition=" '$(Configuration)' == '32-bit debug' ">
<Reference Include="AmtApiWrapper32d">
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == '32-bit release' ">
<Reference Include="AmtApiWrapper32">
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == '64-bit debug' ">
<Reference Include="AmtApiWrapper64d">
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == '64-bit release' ">
<Reference Include="AmtApiWrapper64">
</ItemGroup>

我建议你无条件地让其中一个工作,然后看看引用到底是什么样的。

那就是如果您想将其添加为构建时引用。如果你想在 P/Invoke 声明中使用它,只需使用 #if SYMBOL/ #endif围绕适当的属性。

关于reflection - 根据构建目标在编译时加载不同的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489304/

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