多目标中的嵌入式库.NET项目



我有一个。NET项目,它有两个目标框架:netstandard1.6和net40。我正在尝试嵌入一个库(ICU4N和J2N(,它在netstandard1.3和net40上具有目标。

我创建了一个...lib文件夹,在其中放置相应目标的.dll库。

我的.csprog文件看起来像这个

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup Label="Configuration">
<SignAssembly>True</SignAssembly>
<DelaySign>False</DelaySign>
<DocumentationFile>$(TargetDir)bin$(Configuration)$(TargetFramework)someName.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworks>netstandard1.6;net40</TargetFrameworks>
</PropertyGroup>
<PropertyGroup>
<OutputType>library</OutputType>
</PropertyGroup>
...
<PropertyGroup>
<NoWarn>1701;1702;1591;1570;1572;1573;1574;1580;1584;1658</NoWarn>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' ">
<Reference Include="System" />
</ItemGroup>
...
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">
<PackageReference Include="Microsoft.NETCore.Portable.Compatibility" Version="1.0.1" />
<Reference Include="ICU4N, Version=60.0.0.0, Culture=neutral, PublicKeyToken=efb17c8e4f0e291b">
<HintPath>libICU4Nnetstandard1.3ICU4N.dll</HintPath>
</Reference>
<Reference Include="J2N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=f39447d697a969af">
<HintPath>libJ2Nnetstandard1.3J2N.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' ">
<Reference Include="ICU4N, Version=60.0.0.0, Culture=neutral, PublicKeyToken=efb17c8e4f0e291b">
<HintPath>libICU4Nnet40ICU4N.dll</HintPath>
</Reference>
<Reference Include="J2N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=f39447d697a969af">
<HintPath>libJ2Nnet40J2N.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

当我运行程序时,

System.IO.FileNotFoundException : Could not load file or assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

错误,出现此错误是因为文件...binDebugnet40ICU4N.dll...binDebugnetstandard1.6ICU4N.dll相同,但应该不同。

问题是如何配置项目和.csproj文件,以便在构建过程中,netstandard1.3库的版本落入...binDebugnetstandard1.6文件夹,net40库的版本归入...binDebugnet40文件夹,因为现在,net40版本库落入...binDebugnetstandard1.6...binDebugnet40文件夹。

提前谢谢。

问题出在HintPath中,第一个找到的库是嵌入的。

决定:为netstanard1.6目标块添加以下代码。

<None Remove="libICU4Nnet40ICU4N.dll" />
<None Remove="libJ2Nnet40J2N.dll" />

相关内容

最新更新