C# 在运行时选择引用的二进制文件

C# 在运行时选择引用的二进制文件,c#,.net,.net-standard,.net-standard-2.1,C#,.net,.net Standard,.net Standard 2.1,假设我有两个版本的程序集,具有完全相同的公共接口,但实现略有不同。我在开发过程中引用一个版本进行编译。在我的程序启动期间,我想以某种方式选择这两个程序集中运行哪一个 有没有一种方法不使用反射并且与所有.NET标准2.1实现兼容 程序集在第一次使用之前不会加载-因此,只要在使用该程序集的任何类型之前将您喜欢的版本复制到将加载该程序集的位置,就会加载该程序集 实际上,使用反射(Assembly.Load/LoadFrom)是更常见的解决方案,但它有完全相同的限制-在使用任何类型之前必须这样做,否则默

假设我有两个版本的程序集,具有完全相同的公共接口,但实现略有不同。我在开发过程中引用一个版本进行编译。在我的程序启动期间,我想以某种方式选择这两个程序集中运行哪一个


有没有一种方法不使用反射并且与所有.NET标准2.1实现兼容

程序集在第一次使用之前不会加载-因此,只要在使用该程序集的任何类型之前将您喜欢的版本复制到将加载该程序集的位置,就会加载该程序集


实际上,使用反射(
Assembly.Load
/
LoadFrom
)是更常见的解决方案,但它有完全相同的限制-在使用任何类型之前必须这样做,否则默认加载逻辑将选择任何可用的(或干脆失败)。

我将尝试在csproj中使用条件

<ItemGroup Condition="'$(CONFIG)'=='DEBUG'>
   <ProjectReference Include="{PATH_TO_DEV_PROJECT}">
   ...
   </ProjectReference>
</ItemGroup>
<ItemGroup Condition="'$(CONFIG)'!='DEBUG'>
   <Reference Include="{PATH_TO_RELEASE_REFERENCE}" />
</ItemGroup>


这可能有助于复制正确的程序集。你也可以使用

哦,只是编译时。我想我误解了这个问题。很抱歉