C# .Net核心项目尝试有条件地引用32/64位程序集,但dotnet build始终解析64位

C# .Net核心项目尝试有条件地引用32/64位程序集,但dotnet build始终解析64位,c#,asp.net-core,.net-core,.net-assembly,platform,C#,Asp.net Core,.net Core,.net Assembly,Platform,我有一个.net核心库项目和另一个引用此库项目的Asp.net核心项目 库项目引用具有x64和x86版本的程序集,我希望根据PlatformTarget属性值引用该版本 我已经看到了这个问题,并且已经使用了他们的解决方案,除了我使用PlatformTarget而不是创建自定义属性之外,下面是项目文件: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework&

我有一个.net核心库项目和另一个引用此库项目的Asp.net核心项目

库项目引用具有x64和x86版本的程序集,我希望根据PlatformTarget属性值引用该版本

我已经看到了这个问题,并且已经使用了他们的解决方案,除了我使用PlatformTarget而不是创建自定义属性之外,下面是项目文件:

<Project Sdk="Microsoft.NET.Sdk">    
    <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>            
        <Configurations>Debug;Release</Configurations>
        <Platforms>AnyCPU</Platforms>
        <PlatformTarget>x86</PlatformTarget>
    </PropertyGroup>        
    <ItemGroup>                  
      <Reference Include="STPadLibNet, Version=8.4.3.0, Culture=neutral, PublicKeyToken=a0c5b3c72d40bbc6">
        <HintPath>$(PlatformTarget)\STPadLibNet.dll</HintPath>
      </Reference>          
    </ItemGroup>          
</Project>
由于某些原因,dll文件被复制到我的库项目输出目录,但没有复制到asp.net核心项目输出目录,从而导致启动时出现“找不到程序集”异常,同时,Rider(我使用的IDE)显示MSBuild未解析程序集

那么,如何告诉dotnet build使用HintPath呢?或者如何根据PlatformTarget引用程序集的正确版本

注:

  • 我使用的是.Net core 3.1,我的IDE是Rider 2019.3,操作系统是windows 10 x64 1909,编程语言是C#8
  • 我引用的程序集是一个硬件SDK,由于明显的原因,我无法更改它
  • 我不想创建两个项目,也不想创建一些虚拟项目

  • 最后,我将项目目录外包含STPadLibNet.dll的x86和x64文件夹移动到解决方案目录,这样HintPath再次受到尊重。

    最后,我将项目目录外包含STPadLibNet.dll的x86和x64文件夹移动到解决方案目录,这样HintPath再次受到尊重

    <HintPath>STPadLibNet$(PlatformTarget).dll</HintPath>